作業中のアプリにAndroidツールバーを追加しました。ツールバーの配置は、ディスプレイの上部に表示されるツールバーレイアウトで正しく機能します。ただし、ツールバーは表示されます。空白の色付きのバーとして...アプリのタイトルとオーバーフローアイコンがツールバーに表示されません。
ToolbarActivity.Java:
public abstract class ToolbarActivity extends ActionBarActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setTitle("app name");
}
}
toolbar.xml:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:theme="@style/ThemeOverlay.AppCompat.Dark"
Android:background="@color/ColorPrimary" >
</Android.support.v7.widget.Toolbar>
menu_main.xml:
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
tools:context=".MainActivity">
<item Android:id="@+id/action_settings"
Android:title="@string/action_settings"
Android:orderInCategory="100"
app:showAsAction="always" />
</menu>
style.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>
<item name="colorPrimary">@color/ColorPrimary</item>
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
</style>
編集:Okこれは動作するために完全に異なる方法で設定する必要があります。私はまだToolBar
を使用していなかったので、setActionBar(toolbar)
を使用するときにカスタムToolBar
を追加しました自動的にコンテンツビューに表示されますが、そうではありませんでした。
大きな問題は、ToolBar
が現在のコンテンツビューに追加されないため、実際にToolBar
を現在のコンテンツビューに追加するまで表示されないことです。
さまざまなアプローチがありますが、そのうちの1つだけを紹介します。
toolbar.xml
ファイルを作成する代わりに、ToolBar
をActivity
のレイアウトファイルに直接追加する必要があります。
以下に、Activity
クラスと、Activity
とともに使用するXMLの例を示します。
MainActivity.Java
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if(toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("My custom toolbar!");
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
}
activity_main.xml
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity">
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:background="@Android:color/holo_red_light"
Android:minHeight="100dp">
</Android.support.v7.widget.Toolbar>
</RelativeLayout>
styles.xml
ファイルはそのままです。
ActionBar
をカスタムToolBar
に設定した後、デフォルトのメソッドを使用してActionBar
の外観を変更することに注意することが重要です。たとえば、タイトルを設定する場合は、getSupportActionBar().setTitle()
ではなく、toolbar.setTitle()
から設定する必要があります。
チュートリアル: http://www.viralandroid.com/2015/08/Android-toolbar-example.html
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<!-- Customize your theme here. -->
</style>
レイアウトファイル
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:minHeight="?attr/actionBarSize"
Android:background="#2196F3"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
</Android.support.v7.widget.Toolbar>
Java
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
マニフェストで、次を追加します...
<activity Android:name=".Activity.ToolbarActivity"
Android:label="@string/yourStringTitle"
/>
お役に立てれば