簡體   English   中英

導航抽屜圖標未顯示

[英]Navigation drawer icon not showing

我正在構建Xamarin Android應用程序,並且我想在自定義操作欄中使用抽屜式手勢實現正確的導航抽屜。 除了一件事,其他所有東西都工作正常(抽屜從右側滑出,...):導航抽屜圖標未顯示。

因此,這是我的Activity.axml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
     <android.support.v4.widget.DrawerLayout
           android:orientation="vertical"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:background="#ffffff"
           android:id="@+id/drawerLayout">

           <!-- Main Content -->
           <FrameLayout xmlns:tools="http://schemas.android.com/tools"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
               <fragment
                    android:name="com.google.android.gms.maps.MapFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scrollbars="vertical"
                    android:id="@+id/map" />
                     ...
           </FrameLayout>

           <!-- Right Navigation Drawer -->
           <LinearLayout
               android:orientation="vertical"
               android:layout_width="250dp"
               android:layout_height="match_parent"
               android:layout_gravity="right"
               android:background="#f2f2f2">
               ...
            </LinearLayout>
     </android.support.v4.widget.DrawerLayout>
</RelativeLayout>

這是我的Activity.cs

using Android.Support.V4.App;
using Android.Support.V4.Widget;
... 

public class Activity : Activity
{
    ...
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToogle;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        ActionBar.SetDisplayShowHomeEnabled(false);
        ActionBar.SetDisplayShowTitleEnabled(false);
        ActionBar.SetCustomView(Resource.Layout.CustomActionBar);
        ActionBar.SetDisplayShowCustomEnabled(true);

        SetContentView(Resource.Layout.Activity2);

        mDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawerLayout);
        mDrawerToogle = new ActionBarDrawerToggle(this, mDrawerLayout, Resource.Drawable.ic_drawer,Resource.String.open_drawer_layout, Resource.String.close_drawer_layout);

        mDrawerLayout.SetDrawerListener(mDrawerToogle);
        ActionBar.SetDisplayHomeAsUpEnabled(true);
        ActionBar.SetHomeButtonEnabled(true);

        ...
    }

    protected override void OnPostCreate(Bundle savedInstanceState)
    {
        base.OnPostCreate(savedInstanceState);
        mDrawerToogle.SyncState();
    }

    public override void OnConfigurationChanged(Configuration newConfig)
    {
        base.OnConfigurationChanged(newConfig);
        mDrawerToogle.OnConfigurationChanged(newConfig);
    }

    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        if (mDrawerToogle.OnOptionsItemSelected(item))
        {
            return true;
        }

        return base.OnOptionsItemSelected(item);
    }
    ...
}

這是我的Themes.xml

<resources>
   <style name="CustomActionBarTheme"
     parent="@android:style/Theme.Holo.Light.DarkActionBar">
       <item name="android:actionBarStyle">@style/ActionBar</item>
   </style>
   <style name="ActionBar"
     parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
       <item name="android:height">75dp</item>
       <item name="android:background">#00000000</item>
   </style>
</resources>

難道我做錯了什么? 任何幫助表示贊賞。

UPDATE

我的CustomActionBar具有應用程序圖標和應用程序標題。 這可能會打斷導航抽屜圖標嗎?

不要忘記調用actionbarDrawerToggle.syncState()

這是我找到的解決方案。

首先,您需要將具有以下內容的action_bar.xml文件添加到菜單文件夾:

<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item 
    android:id="@+id/personalInfoActionBar"
    android:title="Informations"
    android:icon="@drawable/infoIcon"
    android:showAsAction="always"/>
</menu>

然后在您的活動中插入以下代碼:

public override bool OnOptionsItemSelected(IMenuItem item)
{
    if (item.ItemId == Resource.Id.personalInfoActionBar)
    {
         if (mDrawerLayout.IsDrawerOpen(mRightDrawer))
         {
              mDrawerLayout.CloseDrawer(mRightDrawer);
         }
         else
         {
              mDrawerLayout.OpenDrawer(mRightDrawer);
         }

         return true;
    }

    return base.OnOptionsItemSelected(item);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM