Значок навигации панели инструментов не установлен
Я пробовал новый компонент панели инструментов и имел некоторые проблемы с значком навигации.
Я хочу реализовать пользовательский значок для обратной навигации:
В моем манифесте я устанавливаю родителя для моей активности:
<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>
Затем в моей работе я настраиваю панель инструментов следующим образом:
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);
Который дает мне:
![Toolbar with back button]()
Значок "назад" не тот, который я установил с помощью setNavigationIcon()
! Независимо от того, что я могу дать методу, значок навигации всегда является стрелкой назад.
Я попытался удалить родительскую ассоциацию в манифесте, но единственный эффект (очевидно), чтобы предотвратить возврат кнопки.
В противном случае, если я хочу значок со стрелкой назад по умолчанию и не вызываю setNavigationIcon()
, у меня вообще нет иконки.
Каков правильный способ обработки значка навигации на панели инструментов (пользовательский и по умолчанию)?
NOte: я запускаю свой тест на Android 4.4
Ответы
Ответ 1
В настоящее время вы можете использовать его, меняя порядок: (кажется, это ошибка)
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);
Ответ 2
Конкретный для значка навигации, это правильный порядок
// 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);
Ответ 3
(Ответ пользователю 802421)
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" />
Ответ 4
Я нашел решение. Это действительно очень просто:
mDrawerToggle.setDrawerIndicatorEnabled(false);
Надеюсь, это поможет вам.
Ответ 5
У меня была проблема simillar. После большой головной боли я обнаружил, что мой ActionBarDrawerToggle изменял значок, также когда он не должен изменять значок (потому что я не ссылался на панель инструментов на компонент переключения). Поэтому в классе NavigationDrawerFragment (который обрабатывает открытие и закрытие) в методе setUp(...)
я устанавливаю
mDrawerToggle.setHomeAsUpIndicator(R.drawable.app_icon);
и, наконец, это сработало.
Ответ 6
Я попытался настроить панель инструментов, такую как @Gabriele Mariotti, но у меня была проблема с названием. Итак, я установил порядок
toolbar.setTitle("Title")
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_good);
и он работает.
Ответ 7
Я использовал метод, который действительно является загадкой всех вышеперечисленных. Я также обнаружил, что 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();
}
});
}
Ответ 8
Вы можете использовать метод invalidate()
для изменения состояния панели инструментов в любом месте.
Пример:
Toolbar toolbar = (Toolbar)findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.mipmap.arrow_white);
toolbar.invalidate(); // restore toolbar
Ответ 9
Используйте setNavigationIcon, чтобы изменить его. не забудьте сначала создать ActionBarDrawerToggle!
образец кода работает для меня:
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);
Ответ 10
Удалите эту строку из активности, если вы добавили
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Затем установите значок
getSupportActionBar().setHomeAsUpIndicator(icon);
Ответ 11
Попробуйте следующее:
<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>
Ответ 12
работайте для меня...
<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"/>