2017-06-21 73 views
0

我有一個包含列表視圖和進度條的框架佈局。現在我正在嘗試添加帶有工具欄佈局的導航抽屜在帶有列表視圖和進度條的框架佈局中。哪裏可以在帶有ListView和Progressbar的FrameLayout中包含工具欄佈局

但問題是,當我使用<include layout="@layout/toolbar" />進度條不顯示和列表視圖後面的工具欄佈局。

它看起來是這樣的:enter image description here

要解決此問題:

  • 我刪除<include layout="@layout/toolbar" />

  • 使用Theme.AppCompat.Light.DarkActionBar

  • 刪除var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar);

  • 刪除SetSupportActionBar(toolbar);

  • 刪除工具欄PARAM從var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, Resource.String.drawer_open, Resource.String.drawer_close);

但是有了這個,我失去了抽屜開合按鈕(三個水平線)。

現在看起來是這樣的 - enter image description here

可有人請幫我加入「抽屜式導航欄與佈局框架佈局與列表視圖和進度條。」或只是回到抽屜按鈕。

這裏是XAML代碼:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <android.support.v4.widget.DrawerLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_height="match_parent" 
    android:layout_width="fill_parent" 
    android:fitsSystemWindows="true"> 

     <!-- <include layout="@layout/toolbar" /> --> 
    <ProgressBar 
     android:id="@+id/progressBar" 
     style="@android:style/Widget.DeviceDefault.ProgressBar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:visibility="gone" /> 
    <ListView 
     android:id="@+id/feedList" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:cacheColorHint="#00000000" 
     android:dividerHeight="1dp" /> 
     <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_height="match_parent" 
     android:layout_width="300dp" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header" /> 
    </android.support.v4.widget.DrawerLayout> 
</FrameLayout> 

主題樣式:

<!-- Navigation Drawer Theme--> 
    <style name="Theme.DesignDemo" parent="Base.Theme.DesignDemo"> 

    </style> 
    <style name="Base.Theme.DesignDemo" 
    parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">#2196F3</item> 
    <item name="colorPrimaryDark">#1976D2</item> 
    <item name="android:windowBackground">@color/window_background</item> 
    </style> 

抽屜活動代碼:

using Android.Support.V7.App; 
    using Android.Support.V4.Widget; 
    using V7Toolbar = Android.Support.V7.Widget.Toolbar; 
    using Android.Support.Design.Widget; 

    [Activity (Label = "ANews", Icon = "@drawable/newsicon", Theme = 
    "@style/Theme.DesignDemo")] 
    public class MainActivity : AppCompatActivity 
    { 

     DrawerLayout drawerLayout; 
     NavigationView navigationView; 

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




     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.FeedsList); 


     drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); 
     // Create ActionBarDrawerToggle button and add it to the toolbar 
     //var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar); 
     //SetSupportActionBar(toolbar); 

     var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, Resource.String.drawer_open, Resource.String.drawer_close); 
     drawerLayout.SetDrawerListener(drawerToggle); 
     drawerToggle.SyncState(); 
     navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); 
     setupDrawerContent(navigationView); //Calling Function 

    } 
    void setupDrawerContent(NavigationView navigationView) 
    { 
     navigationView.NavigationItemSelected += (sender, e) => 
     { 
      e.MenuItem.SetChecked(true); 
      drawerLayout.CloseDrawers(); 
     }; 
    } 
    public override bool OnCreateOptionsMenu(IMenu menu) 
    { 
     navigationView.InflateMenu(Resource.Menu.nav_menu); //Navigation Drawer Layout Menu Creation 
     return true; 
    } 

toolbar.axml代碼:

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:elevation="4dp" 
     android:background="?attr/colorPrimary" /> 
</android.support.design.widget.AppBarLayout> 

在此先感謝。

+0

通常這樣的問題是由於沒有將控件添加到現有的控件(或錯誤的控件)。我在發佈的代碼中看不到任何添加方法。 – jdweng

+0

請發佈您的toolbar.aml代碼。 –

+0

@jdweng,我想你還沒有讀完整個描述/代碼。我已經添加了'SetSupportActionBar(工具欄);'代碼抽屜活動。但對於我已經評論過的解決方法。 – xamDev

回答

0

進度條不顯示,List View放在工具欄佈局後面。

把你ProgressBarListViewToolbarLinearLayoutRelativeLayout,因爲隨着document說: FrameLayout應該被用來保存單個子視圖,因爲它組織孩子views的方式,孩子們相互重疊其他。

並修改您的代碼在您的工具欄。axml:

<android.support.design.widget.CoordinatorLayout 
    ... 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content">//From match_parent to wrap_content, when the property is match_parent, it means that the view wants to be as big as its parent (minus padding) 

但是有了這個,我失去了抽屜開合按鈕(三個水平線)。

原因是在你的ActionBarDrawerToggle你沒有通過一個工具欄,所以你失去了抽屜開關按鈕。

// NOTE: Make sure you pass in a valid toolbar reference. ActionBarDrawToggle() does not require it 
// and will not render the hamburger icon without it. 
var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.drawer_open, Resource.String.drawer_close); 

Here is my complete code about Drawerlayout它工作正常。

+0

非常感謝 – xamDev

相關問題