2017-04-23 11 views
1

プログラムでAppCompatActivityを拡張するクラスのツールバーを設定しようとしていますが、実行時にアクティビティにツールバーがありません。私がツールバーを使用して見つけることができたすべてのチュートリアルでは、ツールバーを作成してXMLで追加しましたが、私はすべてのアクティビティにツールバーを追加するためのより良い方法を探しています。ただし、ツールバーは表示されないか、実行時に追加されないため、問題を見つけることができません。これは私のコードです:プログラムでAppCompatActivityにツールバーを作成して追加する

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = new Toolbar(this); 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, R.attr.actionBarSize); 
     toolbar.setLayoutParams(layoutParams); 
     toolbar.setPopupTheme(R.style.AppTheme); 
     toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); 
     toolbar.setTitle("This is the title"); 
     toolbar.setVisibility(View.VISIBLE); 
     setSupportActionBar(toolbar); 
    } 
} 

そして、これは私のXMLファイルactivity_main.xmlです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

</LinearLayout> 

私は私のツールバーと間違っているかを把握することはできません。助けをありがとうございました。

+0

を助ける私は理解していません。 –

+1

参照:https://guides.codepath.com/android/Using-the-App-Toolbar#reusing-the-toolbar –

答えて

1

YOUR_LAYOUT.addView(toolbar, 0)を使用してActivityレイアウトにToolbarを追加します。

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = new Toolbar(this); 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 168); 
     toolbar.setLayoutParams(layoutParams); 
     toolbar.setPopupTheme(R.style.AppTheme); 
     toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); 
     toolbar.setTitle("This is the title"); 
     toolbar.setVisibility(View.VISIBLE); 

     // Assuming in activity_main, you are using LinearLayout as root 
     LinearLayout ll = (LinearLayout) findViewById(R.id.your_linear_layout); 
     ll.addView(toolbar, 0); 

     setSupportActionBar(toolbar); 
    } 
} 

使用RuntimeExceptionを回避するためにMainActivityテーマAppTheme.NoActionBar

このActivityはすでに窓の装飾が供給するaction barを持っています。 Window.FEATURE_SUPPORT_ACTION_BARをリクエストしておらず、テーマの windowActionBarfalseToolbarを代わりに使用してください。

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

OUTPUT:XMLを使用していないことはどんな簡単に以下冗長である理由

enter image description here

希望これは〜

関連する問題