web-dev-qa-db-ja.com

新しいAppCompatツールバーのHomeAsUpインジケーターを変更する方法

AppCompatツールバーのデフォルトのActionBar homeAsUpインジケーター(描画可能)を変更したい。それを達成する方法は?デフォルトの矢印のみが表示されます。

スタイル(他のAPIレベルと同じ):

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <!-- API 14 theme customizations can go here. -->
        <item name="Android:windowActionBarOverlay">true</item>
        <item name="Android:homeAsUpIndicator">@drawable/home</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
        <item name="homeAsUpIndicator">@drawable/home</item>
</style>

フラグメントレイアウトのツールバー:

<Android.support.v7.widget.Toolbar
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/my_awesome_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="@Android:color/transparent"
        Android:homeAsUpIndicator="@drawable/home"
        Android:minHeight="?attr/actionBarSize"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:theme="@style/AppTheme" />

フラグメント内:

toolbar = (Toolbar) rootView.findViewById(R.id.my_awesome_toolbar);

        activity.setSupportActionBar(toolbar);

        ActionBar actionBar = activity.getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowTitleEnabled(false);
24
dasar

アイコンを変更するには、実行時に呼び出すだけです:

toolbar.setNavigationIcon(R.drawable.home);

スタイル/テーマが機能しないトリック。

homeAsUpを有効にする方法、またはappcompat v21を使用してスタンドアロンツールバーでsetDisplayHomeAsUpEnabled()を呼び出す方法

30
dasar

setHomeAsUpIndicator(int resId)を試しましたが、うまくいきます。

_private void initToolbar ( Toolbar mToolbar ) {

    mToolbar.setTitleTextColor ( getResources ().getColor ( R.color.main_title ) );
    setSupportActionBar ( mToolbar );

    ActionBar actionbar = getSupportActionBar ();
    actionbar.setDisplayHomeAsUpEnabled ( true );
    actionbar.setHomeAsUpIndicator ( R.drawable.ic_action_back );
}
_

しかし、mToolbar.setNavigationIcon(R.drawable.ic_action_back)は機能しません:(

15
RockerFlower

この行をstyles.xmlに追加するだけです

        <item name="navigationIcon">@drawable/ic_back_arrow</item>
14
Ioane Sharvadze

Android.support.v7.app.ActionBarDrawerToggleがDrawerLayoutおよびToolbarと一緒に使用される場合、次のコードでhomeAsUpアイコンを変更できます。

//set home as up indicator
mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_up_indicator);

//remove home as up indicator
mDrawerToggle.setHomeAsUpIndicator(null);

ホームインジケータの代わりにhomeAsUpIndicatorインジケータを表示するには、次の手順を実行します。

mDrawerToggle.setDrawerIndicatorEnabled(false);

ドキュメント:

ActionBarDrawerToggle#setHomeAsUpIndicatorActionBarDrawerToggle#setDrawerIndicatorEnabled

9

toolbar.setNavigationIcon(R.drawable.ic_action_back)が実際に機能することがわかりました。これを機能させるコードを次に示します。

  @Override
   protected void onCreate(Bundle savedInstanceState) {

   .....
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setNavigationIcon(R.drawable.ic_action_back);

OnOptionsItemSelected(MenuItem item)に次のコードを投稿します

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   ......
    if (id == Android.R.id.home) {
        startActivity(new Intent(this, MainActivity.class));
        return true;
    }

    return super.onOptionsItemSelected(item);
}

注このコードの主なアクティビティは、戻るボタンまたはホームボタンに移動する現在のアクティビティです。これが役立つことを願っています

3

残念ながら、このスタイルラインが、メインアクティビティを含むアプリ内の他のアクティビティと一般的に共有されるAppCompatツールバー/アプリバーで使用される場合、標準のデフォルトとは異なり、指定された "navigationIcon" HomeAsUpIndicator、これは明示的にenabledアクティビティで必要に応じて表示されない限り、通常は次のように表示されます:(in(onCreate()

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

上記のスタイルラインでは、同様の方法で反対の方法で動作するため、次のように、メインアクティビティのように表示する必要がない場合は、インジケーターを明示的にdisabledにする必要があります:(onCreate()

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

(Android 4.0.4、4.3、および4.4.2電話で見られるように)

2
Dan K