web-dev-qa-db-ja.com

タイトルなどがAndroidツールバーに表示されない

作業中のアプリに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>
15
AJW

編集:Okこれは動作するために完全に異なる方法で設定する必要があります。私はまだToolBarを使用していなかったので、setActionBar(toolbar)を使用するときにカスタムToolBarを追加しました自動的にコンテンツビューに表示されますが、そうではありませんでした。

大きな問題は、ToolBarが現在のコンテンツビューに追加されないため、実際にToolBarを現在のコンテンツビューに追加するまで表示されないことです。

さまざまなアプローチがありますが、そのうちの1つだけを紹介します。

toolbar.xmlファイルを作成する代わりに、ToolBarActivityのレイアウトファイルに直接追加する必要があります。

以下に、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()から設定する必要があります。

28
Darwind

チュートリアル: 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);
2
Half Moon

マニフェストで、次を追加します...

 <activity Android:name=".Activity.ToolbarActivity"
            Android:label="@string/yourStringTitle"
            />

お役に立てれば

0
Richie