我在这里做错了什么。我想使用导航抽屉,然后为内容创建一些片段,以显示不同的页面'。我有导航视图,汉堡菜单等工作得很好。但我似乎无法让我的碎片出现。所以我尝试用文本视图替换我的片段,这样我就可以判断它是否显示但是我现在甚至无法显示它。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" android:id="@+id/includething"/>
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sample Text "/>
<!--<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/includething"/>-->
</RelativeLayout >
<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>
编辑:添加工具栏布局我包括
<?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/MyTheme">
<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>
有一次,我得到了片段,但它出现在导航抽屉里。现在我甚至无法表现出来。我究竟做错了什么?我现在注释掉片段只是希望将textview显示在工具栏下方。如果我可以做到这一点,我相信我可以让碎片的东西工作。
编辑:在尝试板球模式后,我能够更接近,但看起来现在工具栏位于主要内容区域的顶部。有没有办法将其向下移动,以便内容从工具栏的底部开始?我已将片段的背景变为黄色,因此在下图中更容易看到。您可以看到的是,实际上文本出现在片段中但被工具栏阻止了。
答案 0 :(得分:2)
此代码适用于我的应用程序,在VS2017中使用Xamarin开发。希望它可以帮到你。
您的Main.axml文件应该是这样的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorWhite"
android:id="@+id/ll">
<include
layout="@layout/toolbar" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_height="match_parent"
android:layout_width="320dp"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/navbar" />
</android.support.v4.widget.DrawerLayout>
您的MainActivity
public class MainActivity : AppCompatActivity
{
#region Menu
private DrawerLayout drawerLayout;
private NavigationView navigationView;
V7Toolbar toolbar;
#endregion Menu
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
#region Menu
drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.drawer_open, Resource.String.drawer_close);
drawerLayout.SetDrawerListener(drawerToggle);
drawerToggle.SyncState();
navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
SetupDrawerContent(navigationView);
#endregion Menu
}
#region Menu
private void SetupDrawerContent(NavigationView navigationView)
{
navigationView.NavigationItemSelected += (sender, e) =>
{
e.MenuItem.SetChecked(true);
FragmentTransaction ft = this.FragmentManager.BeginTransaction();
switch (e.MenuItem.ItemId)
{
case Resource.Id.mn_Home:
toolbar.Title = "Dashboard";
HomeFragment mg4 = new HomeFragment();
ft.Replace(Resource.Id.ll, mg4);
break;
}
ft.Commit();
drawerLayout.CloseDrawers();
};
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
if (!IsNavigationMenuLoaded)
{
navigationView.InflateMenu(Resource.Menu.menu_main);
IsNavigationMenuLoaded = true;
}
return true;
}
#endregion Menu
}
你的片段
public class HomeFragment : Fragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = LayoutInflater.From(Activity).Inflate(Resource.Layout.layout_Home, null);
return view;
}
}
答案 1 :(得分:1)
从您提供的xml看起来,您的TextView位于工具栏后面。使用RelativeLayout时,所有视图的位置都需要相对于彼此或其父级定义。
如果将shares_memory
添加到TextView,
android:layout_below="@id/includething"
答案 2 :(得分:1)
DrawerLayout充当窗口内容的顶级容器,允许交互式&#34;抽屉&#34;视图从窗口的一个或两个垂直边缘拉出。
你有一个LinearLayout作为顶部元素
您的工具栏也可能正在将文本推出视图。
您可以将解决方案与文档进行比较。 https://developer.android.com/training/implementing-navigation/nav-drawer.html
您的工具栏不仅仅是一个工具栏,它还是一个整体视图。
<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">
最后一行将你的文字从屏幕上移开