[英]ActionBar with icon & title
我有一個現有的應用程序,其中有ActionBar。 動作欄上有一個后退按鈕(在其中),圖標,標題在左側對齊,選項菜單在右側。 我最近將AppCompat庫添加到了項目中。 現在圖標消失了。 背面,標題和選項都可以正常顯示。
因此,我着手創建一個工具欄並將其包含在布局中。 問題是有很多屏幕已經開始崩潰,因為我沒有包含工具欄。 另外,如果添加了NoActionBar主題,則getSupportActionBar返回null。
可以有一種簡單的方法來保留舊的操作欄(不添加工具欄)嗎?
碼
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null)
setSupportActionBar(toolbar);
actionBar.setTitle("Scan Code");
}
工具欄布局
<android.support.design.widget.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways">
<android.support.v7.widget.Toolbar
android:minHeight="?attr/actionBarSize"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:navigationIcon="@drawable/app_icon">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
樣式
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
當我想在所有活動中用工具欄替換操作欄時,我將覆蓋BaseActivity中的setContentView()方法。 看起來像這樣:
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
View view = findViewById(R.id.toolbarContainer);
if (view != null) {
toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
setTitle(getTitle());
}
}
解決方案很簡單。 您需要針對特定屏幕的自定義工具欄。 您已將apptheme AppTheme.NoActionBar
。 這意味着您的所有屏幕都沒有工具欄。 首先將您的應用更改為默認設置。
<style name="AppStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
如果您只想為一個屏幕更改工具欄,則可以添加自定義樣式,例如與您的Apptheme相同。
<style name="CustomStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
在清單文件中聲明此活動時,請添加此樣式。
<activity
android:theme="@style/CustomStyle"
android:name=".MyActivity" />
android.support.v7.app.ActionBar
Toolbar
使用setTitle
, setNavigationIcon
嘗試這個 。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// App Logo
toolbar.setLogo(R.mipmap.ic_launcher);
// Title
toolbar.setTitle("My Title");
setSupportActionBar(toolbar);
// Navigation Icon
toolbar.setNavigationIcon(R.mipmap.ic_launcher);
試試這個刪除android.support.v7.app.ActionBar
toolbar = (Toolbar) findViewById(R.id.ar_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Title");
getSupportActionBar().setIcon(R.mipmap.ic_launcher);
將此主題應用於您的活動
<style name="AccountSetting" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimaryDark">@color/colorWhite</item>
<item name="colorPrimary">@color/colorWhite</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.