4

マテリアル デザインをテストしており、拡張ツールバーを使用してアプリを開発しています。私のアプリは非常にシンプルです: メイン アクティビティが拡張ActionBarActivityされ、私のレイアウトは次のようになります。

<LinearLayout 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=".WeatherActivity"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/my_toolbar"
        android:layout_height="128dp"
        popupTheme="@style/ActionBarPopupThemeOverlay"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="@string/location_placeholder"
        android:textAlignment="viewStart"
        android:layout_gravity="start"
        />
</LinearLayout>

現在の場所をタイトルとして表示したいと思います。私が最初に気付いたのは、Android Emulator (API 18) で、タイトルが左マージンの下マージンに関する重要なガイドラインを尊重していないようで、左側に表示され、ツールバー内に垂直に入力されたことです。では、ツールバーのタイトル (toolbar.setTitle) などを使用する必要がありますか? 次に、タイトルや簡単な説明 (レイアウト構造のマテリアル ガイドラインに示されているように) などのより複雑なものを作成したい場合、レイアウトはどうすればよいですか? ご支援ありがとうございます!

4

1 に答える 1

7

アクティビティが拡張されるので、このアクティビティのテーマが または のいずれかActionBarActivityの子であることも確認する必要があります。バリアントを使用していない場合は、代わりに次の行をテーマに追加できます。Theme.AppCompat.NoActionBarTheme.AppCompat.Light.NoActionBarTheme.AppCompat

<item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item> 

次に、ツールバーをレイアウトに追加するだけです (既にあるように見えます)。

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_toolbar"
    android:layout_height="128dp"
    popupTheme="@style/ActionBarPopupThemeOverlay"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

次に、アクティビティで次の方法でツールバーを ActionBar に設定しますsetSupportActionBar

    Toolbar mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(mToolbar);

その最後の部分は、「Android、このツールバー ウィジェットを使用して、SupportActionBar を使用するのとまったく同じように使用する」と言っているため、すべての魔法が発生する場所です。つまり、タイトル/サブタイトルを設定したい場合は、次のように呼び出すだけです。

    getSupportActionBar().setTitle("Toolbar Title");
    getSupportActionBar().setSubtitle("Toolbar Subtitle");

これは、同じコールバックを使用してツールバーにメニューを作成できることも意味します。

質問に直接答えるには:

では、ツールバーのタイトル (toolbar.setTitle) などを使用する必要がありますか?

実際には、toolbar.setTitle()またはのいずれかを使用できます。getSupportActionBar().setTitle()

次に、タイトルや簡単な説明 (レイアウト構造のマテリアル ガイドラインに示されているように) などのより複雑なものを作成したい場合、レイアウトはどうすればよいですか?

ツールバーはタイトルとサブタイトルをサポートしているため、設定する必要があります。すべてのツールバーがサポートしているものを確認するためだけに、ドキュメントをチェックアウトします。原則として、アクションバーでできることはツールバーでもできます。ツールバーでサポートされているものを超えるクレイジーな要件がある場合は、ツールバーが単なる派手な ViewGroup であることを覚えておいてください。そのため、LinearLayout であるかのように簡単にウィジェット/ビューを追加できます。

于 2014-10-23T14:04:49.723 に答える