簡體   English   中英

帶圖標和標題的ActionBar

[英]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使用setTitlesetNavigationIcon

嘗試這個 。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM