Этот вопрос включает в себя Xamarin Android и использование C#, но я думаю, что разработчик Java с помощью Android Studio ... все еще может понять проблему и может помочь.AppCompatActivity с новой кнопкой панели инструментов с кнопкой «Домой» не отображается правильно?
Как я исследовал в сети, все должно быть простым. Проблема здесь в том, что Toolbar
(в библиотеке поддержки v7) отображается сверху, но кнопка «Домой» не отображается так, как я хочу. У меня есть DrawerLayout
в главном макете, нажатие на кнопку «Домой» должно расширить раскладку ящика и вместе с тем, что значок «Домой» должен переключиться на значок со стрелкой влево (значок назад). Щелчок по кнопке «Назад» должен свернуть макет ящика и переключить значок обратно на начальный значок дома.
У меня теперь была кнопка «Домой», всегда отображается значок стрелки влево. Я думаю, это потому, что я использую вызов SupportActionBar.SetDisplayHomeAsUpEnabled(true);
Но без установки, как показано на рисунке, ничего не отображается, поэтому нажимать не на что.
Вот код, в результате чего кнопка рабочего дома, но его иконка всегда показывает стрелка влево:
Формуляром Панель:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/mainToolbar"
android:background="?attr/colorPrimary"
android:layout_height="@dimen/ToolbarHeight">
</android.support.v7.widget.Toolbar>
Код за:
//here is in OnCreate callback of the main Activity
var toolBar = FindViewById<Toolbar>(Resource.Id.mainToolbar);
SetSupportActionBar(toolBar);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeButtonEnabled(true);
С приведенным выше кодом, если я выхожу из строки SupportActionBar.SetDisplayHomeAsUpEnabled(true);
, то ничего не отображается (пока я хочу, чтобы некоторые иконки, такие как значок приложения , были показаны).
Я надеюсь, что кто-то здесь сможет понять, чего я пропустил здесь. BTW Я запускаю код на Android 4.4.4, хотя я думаю, что это не проблема версии Android (потому что в этом случае библиотека поддержки должна работать).
UPDATE: Основной макет:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootFrame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v4.widget.DrawerLayout
android:id="@+id/main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- main content -->
<LinearLayout
android:id="@+id/mainContent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<include layout="@layout/MainToolBar"/>
<FrameLayout android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/contentFrame"></FrameLayout>
</LinearLayout>
<!-- left menu -->
<android.support.design.widget.NavigationView
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:minWidth="@dimen/LeftMenuMinWidth"
android:layout_gravity="start"
android:fitsSystemWindows="false"
android:background="@color/LeftMenuBackgroundColor"
android:id="@+id/leftMenu">
<!-- layout for the menu here ... -->
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
Код для настройки ящика слушателя, это помещается после кода установки панели инструментов я отправил выше:
var dl = FindViewById<DrawerLayout>(Resource.Id.main);
//the ActionBarDrawerToggle here is from Android.Support.V7.app
dl.AddDrawerListener(new ActionBarDrawerToggle(this, dl, toolBar, 0, 0));
Надеюсь, теперь я предоставил достаточно кода.
@MikeM.Я установил слушателя, поэтому я сказал, что кнопка «Домой» работает (но ее значок продолжает отображаться как стрелка влево), ящик сбрасывается/расширяется ОК (это когда я использую 'SupportActionBar.SetDisplayHomeAsUpEnabled (true);'), но без использования этого ничего не отображается и ничего не нажимать. Благодарю. – Hopeless
Интерфейс 'DrawerListener 'не является тем, что открывает/закрывает ящик. Это то, что позволяет значку оживлять. Пожалуйста, разместите соответствующий код для вашего переключения. –
О, и вызов 'SetDisplayShowHomeEnabled() не нужен, но я не могу вспомнить atm, если это помешало бы значку переключателя. –