Aus irgendeinem Grund entschied jemand bei Google, dass diese zu No-Ops werden sollten. Dies kann unten gesehen werden.
ToolbarWidgetWrapper.java
@Override
public void setHomeButtonEnabled(boolean enable) {
// Ignore
}
ToolbarActionBar.java
@Override
public void setHomeButtonEnabled(boolean enabled) {
// If the nav button on a Toolbar is present, it's enabled. No-op.
}
Es ist scheinen, als ob ToolbarWidgetWrapper, die verwendet wird, um die Toolbar zu kartieren Unterschiede ActionBar des Nav-Symbol in der Symbolleiste als ‚Heim behandelt Als Aufwärts-Indikator '. Also nur dieser Teil ist anklickbar. Das neue Logo, das Sie in der Toolbar einstellen können, kann niemals anklickbar sein. Sie stellen nicht einmal die Aussicht, ihre private
Rolls-Eyes.
So ist die erste Arbeit ist um, wenn Sie die ‚Startseite Wie Up‘ nicht-Funktion verwenden, oder Sie bereit sind, Ihre oben ziehbar mit Ihrem Hause ziehbar zu kombinieren, dann können Sie einfach festlegen das android:homeAsUpIndicator
Attribut in Ihrem android:actionBarStyle
zusammen mit android:displayOptions="homeAsUp"
.
<style name="AppBaseTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Material.Light.ActionBar.Solid">
<item name="android:background">@color/action_bar_bg</item>
<item name="android:displayOptions">homeAsUp</item>
<item name="android:homeAsUpIndicator">@drawable/app_logo</item>
</style>
Offensichtlich kann das gleiche mit Code getan werden.
getActionBar().setHomeAsUpIndicator(R.drawable.app_logo);
getActionBar().setDisplayHomeAsUpEnabled(true);
Dies bedeutet jedoch, dass es nicht angezeigt wird, während die Aktivität tatsächlich geladen wird. Also am besten mit der Theming Option.
Die dritte Option, die am besten wäre, besteht einfach darin, die Navigationsschaltfläche für die neue Symbolleistenansicht zu gestalten. Welche verwendet android:navigationButtonStyle
aber rate mal was .. sie haben das nicht öffentlich gemacht. Ich glaube, das ist ein echter Fehler, aber das alles fängt an, sich wie die ursprünglichen Probleme zu fühlen, die wir alle mit ActionBar hatten.
Lassen Sie uns also arbeiten, die Arbeit herum. Ok, lass uns versuchen, nur android:navigationIcon
in android:toolbarStyle
zu setzen. Nee. Ok, probieren Sie alle anderen möglichen Variationen aus, die Sie sich vorstellen können, einschließlich android:actionBarStyle
und android:actionBarTheme
. Nee. Dies ist wahrscheinlich, weil die navigationIcon im Standard-ActionBar/Activity/Toolbar-Chaos an einer Stelle überschrieben wird. Ich kann mich nicht darum kümmern, wo und um mich herumzukommen.
Ok, also endlich wählen wir die flexibelste Option. Löschen Sie die Standard-Home-Schaltfläche, und verwenden Sie unsere eigene, indem Sie die ältere benutzerdefinierte Navigationsfunktion implementieren. Dies bedeutet, wenn Sie bereits ein benutzerdefiniertes Navigationsgerät verwenden, müssen Sie Ihr Navigationsgerät mit diesem kombinieren.
Werte-v21/Stile.xml
<style name="AppBaseTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Material.Light.ActionBar.Solid">
<item name="android:background">@color/action_bar_bg</item>
<item name="android:displayOptions">showCustom</item>
<item name="android:customNavigationLayout">@layout/nav_layout</item>
</style>
Layout-v21/nav_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:layout_marginEnd="8dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:adjustViewBounds="true"
android:background="?android:attr/actionBarItemBackground"
android:contentDescription="@string/ab_home_description"
android:src="@drawable/app_logo"
android:scaleType="fitCenter"
/>
In Ihrer Aktivität/BaseActivity Klasse fügen Sie die folgende. Und das wird den Home-Button fälschen.
@Override
public boolean onPrepareOptionsMenu(final Menu menu)
{
prepareOptionsMenuLollipop(menu);
return super.onPrepareOptionsMenu(menu);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void prepareOptionsMenuLollipop(Menu menu)
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
final MenuItem homeItem = menu.add(Menu.NONE, android.R.id.home,
Menu.NONE, R.string.ab_home_description);
homeItem.setVisible(false);
View homeView = getActionBar().getCustomView().findViewById(android.R.id.home);
homeView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
getWindow().getCallback().onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, homeItem);
}
});
}
}
Verwenden Sie eine Standard ActionBar oder ToolBar als Actionbar? – dhuma1981
Standard ActionBar – TommyNecessary
Welche Funktionalität erwarten Sie von der Home-Taste? Um als Hoch-Taste oder vielleicht eine Schublade zu arbeiten? Veröffentlichen Sie einen Code und das von Ihnen verwendete Thema. – Simas