工具栏导航图标从未设置
我正在尝试新的工具栏组件,导航图标有些麻烦。 我想实现一个自定义的图标进行后退导航:
在我的清单中,我设定了一位家长参加我的活动:
<activity android:name=".CardsActivity" android:parentActivityName=".MainActivity"> <!-- Parent activity meta-data to support API level 7+ --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
我声明这样的工具栏:
<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" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.lollitest.MainActivity" > <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:layout_marginBottom="10dp" android:background="?attr/colorPrimary" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/my_awesome_toolbar" android:text="@string/hello_world" /> </RelativeLayout>
然后在我的活动中,我configuration工具栏像这样:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Title"); toolbar.setSubtitle("Sub"); toolbar.setLogo(R.drawable.ic_launcher); setSupportActionBar(toolbar);
哪给我:
后面的图标不是我用setNavigationIcon()
设置的图标! 无论我给该方法提供的是什么,导航图标总是后退箭头。
我试图删除清单中的父协会,但唯一的影响是(显然)阻止button回来。
相反,如果我想要默认后退箭头图标,不要调用setNavigationIcon()
我根本没有任何图标。
什么是正确的方式来处理工具栏中的导航图标(自定义和默认)?
NOte:我在Android 4.4上运行我的testing
目前你可以使用它,改变顺序:(这似乎是一个错误)
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Title"); toolbar.setSubtitle("Sub"); toolbar.setLogo(R.drawable.ic_launcher);
具体到导航图标,这是正确的顺序
// get the actionbar as Toolbar and set it up Toolbar toolbar = (Toolbar) findViewById(R.id.signIn_toolbar); setSupportActionBar(toolbar);
通知工具栏提供后退导航。 这会将图标设置为默认材质图标
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
稍后用自定义的覆盖图标,在我的情况下是全息图标
toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_36dp);
(对user802421的回答)
private void setToolbar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_action_back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } }
toolbar.xml
<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="@dimen/toolbar_height" android:background="?attr/colorPrimaryDark" />
我试图build立像@Gabriele Mariotti这样的工具栏,但是我有一些题目问题。 那么我就下定单了
toolbar.setTitle("Title") setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_good);
它的工作。
我刚刚find解决scheme。 这真的很简单:
mDrawerToggle.setDrawerIndicatorEnabled(false);
希望它会帮助你。
我用下面的方法真的是以上所有的难题。 我也发现onOptionsItemSelected从未激活。
mDrawerToggle.setDrawerIndicatorEnabled(false); getSupportActionBar().setHomeButtonEnabled(true); Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); if (toolbar != null) { toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); }
您可以使用invalidate()
方法在任何地方更改工具栏状态。 例:
Toolbar toolbar = (Toolbar)findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.mipmap.arrow_white); toolbar.invalidate(); // restore toolbar
使用setNavigationIcon来改变它。 不要忘记先创buildActionBarDrawerToggle!
示例代码为我工作:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawer = (DrawerLayout)findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); toolbar.setNavigationIcon(R.drawable.ic_menu);
我有simillar问题。 我发现一个很大的头痛后,我的ActionBarDrawerToggle正在修改图标,也不应该修改图标(因为我没有提供切换组件的工具栏的参考)。 所以在我设置的setUp(...)
方法的NavigationDrawerFragment类(处理打开和closures)中
mDrawerToggle.setHomeAsUpIndicator(R.drawable.app_icon);
最后它的工作。
如果已添加,请从活动中删除此行
@Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); }
然后设置图标
getSupportActionBar().setHomeAsUpIndicator(icon);
尝试这个:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:toolbar="http://schemas.android.com/apk/res-auto" android:id="@+id/tool_drawer" android:layout_width="match_parent" android:layout_height="?actionBarSize" toolbar:navigationIcon="@drawable/ic_navigation"> </android.support.v7.widget.Toolbar>
为我工作…
<android.support.v7.widget.Toolbar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/toolBar" android:background="@color/colorGreen" app:title="Title" app:titleTextColor="@color/colorBlack" app:navigationIcon="@drawable/ic_action_back"/>