2017-11-01 7 views
0

私はActionBarという既存のアプリを持っています。アクションバーには、戻るボタン(revelant)、アイコン、タイトルが左側に、オプションメニューが右側にあります。最近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> 
+0

logcatエラー – Lokesh

+0

を追加してください、あなたはすべてのビューは、カスタム設定を追加するためにオーバーライドすることができsetContentViewを持っているように、これはすっきり実装に見えたAppComptActivityとmenifestスタイルテーマ – Lokesh

答えて

1

すべてのアクティビティでアクションバーをツールバーに置き換えたい場合は、BaseControl()メソッドをBaseActivityでオーバーライドします。それは次のようになります。

@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()); 
    } 
} 
+0

を拡張し確認してください。 – sabkaraja

0
  • android.support.v7.app.ActionBar
  • 使用を削除setTitle,setNavigationIconToolbar

これを試してください。

0

android.support.v7.app.ActionBar

ソリューションは簡単です、あなたの活動に

<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> 
2

をこのテーマを適用を削除し、これを試してみてください。特定の画面用にカスタムツールバーが必要です。 apptheme = AppTheme.NoActionBarにしました。つまり、すべての画面にはツールバーがありません。 まずappthemをそのままデフォルトに変更します。

<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> 

ツールバーを1画面分だけ変更したい場合は、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" /> 
関連する問題