Android:不希望ListView使用完整的Drawer
Android: Dont want the ListView to use the complete Drawer
我正在编写我的第一个小应用程序。在这个应用程序中,我使用了两个抽屉,一个在右边,一个在左边:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:id="@+id/relLayout"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:background="#D1933C"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<com.schnapsidee.app.CustomWebView
android:id="@+id/Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/space1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/space3"
android:scrollbars="vertical"
android:text="@string/fail"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/black" />
<android.support.v7.widget.Space
android:id="@+id/space1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="62dp" />
<android.support.v7.widget.Space
android:id="@+id/space2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<android.support.v7.widget.Space
android:id="@+id/space3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="55dp" />
<TextView
android:id="@+id/seitenZahl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textColor="@color/black"
android:textSize="22sp" />
</RelativeLayout>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"
android:width="0dp"/>
<ListView
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="800dp"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@drawable/pergament"
android:scrollbars="vertical"
android:drawSelectorOnTop="false"
/>
我像这样使用它们:
mDrawerItemLeft = getResources().getStringArray(R.array.sidebar_array_left);
mDrawerItemRight = getResources().getStringArray(R.array.sidebar_array_right);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerListLeft = (ListView) findViewById(R.id.left_drawer);
mDrawerListRight = (ListView) findViewById(R.id.right_drawer);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
mDrawerListLeft.setAdapter(new Adapter(this, R.layout.drawer_list_item_left,
mDrawerItemLeft));
mDrawerListRight.setAdapter(new Adapter(this, R.layout.drawer_list_item_right,
mDrawerItemRight));
mDrawerListLeft.setOnItemClickListener(new LeftDrawerItemClickListener());
mDrawerListRight.setOnItemClickListener(new RightDrawerItemClickListener());
我的问题是,我不希望右抽屉使用完整的屏幕高度。我只是想让它使用它的一部分,就像这张图片中的红色部分:
http://i.stack.imgur.com/IdXAf.jpg
知道我该怎么做吗?
提前致谢!
为两个视图提供宽度 0dp 并在两个视图中添加 android:layout_weight="1"观看次数。
与其使用 ListView,不如使用布局,例如线性、相对,然后将 ListView 放置在该布局内。如果将布局作为 xml 中的最后一个元素放置,则整个布局将成为导航抽屉的布局。然后,您可以根据需要以任何方式将 Listview 放置在布局中。
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#111"/>
<!-- The navigation drawer -->
<RelativeLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">
<!-- Position this list view inside the relative layout the way you want -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
在导航抽屉中使用
android:layout_height="0dp"
android:layout_weight="1"
使用这个,你应该知道的事情......导航抽屉占据其内容的高度。所以它采用 listView,s height .. 给你的 listview 高度(根据你的要求)然后给 listView 背景“透明如下所示
android:layout_height="as you want"
android:background="@color/tranparent"
让它在你的 header 下然后采用线性布局并在你 header 之后编写导航抽屉代码.. 如果你是相对布局然后在你的导航中使用 android:layout_below="your header id"
抽屉.
导航抽屉无需专门为 ListView,您可以使用任何 View/ViewGroup 为此目的,只需设置 gravity="end" 使其成为正确的导航抽屉。
<ListView
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="800dp"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@drawable/pergament"
android:scrollbars="vertical"
android:drawSelectorOnTop="false" />
将上面的代码改为:
<RelativeLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="end">
<ListView
android:id="@+id/right_drawer"
android:layout_width="match_parent"
android:layout_height="500dp"
android:choiceMode="singleChoice"
android:layout_centerVertical="true" />
</RelativeLayout>
根据需要设置ListView的其他属性,并将高度更改为小于800dp的值,因为800dp是相当长的高度,在很多设备上肯定会大于实际屏幕高度。
我正在编写我的第一个小应用程序。在这个应用程序中,我使用了两个抽屉,一个在右边,一个在左边:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:id="@+id/relLayout"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:background="#D1933C"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<com.schnapsidee.app.CustomWebView
android:id="@+id/Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/space1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/space3"
android:scrollbars="vertical"
android:text="@string/fail"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/black" />
<android.support.v7.widget.Space
android:id="@+id/space1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="62dp" />
<android.support.v7.widget.Space
android:id="@+id/space2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<android.support.v7.widget.Space
android:id="@+id/space3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="55dp" />
<TextView
android:id="@+id/seitenZahl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textColor="@color/black"
android:textSize="22sp" />
</RelativeLayout>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"
android:width="0dp"/>
<ListView
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="800dp"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@drawable/pergament"
android:scrollbars="vertical"
android:drawSelectorOnTop="false"
/>
我像这样使用它们:
mDrawerItemLeft = getResources().getStringArray(R.array.sidebar_array_left);
mDrawerItemRight = getResources().getStringArray(R.array.sidebar_array_right);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerListLeft = (ListView) findViewById(R.id.left_drawer);
mDrawerListRight = (ListView) findViewById(R.id.right_drawer);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
mDrawerListLeft.setAdapter(new Adapter(this, R.layout.drawer_list_item_left,
mDrawerItemLeft));
mDrawerListRight.setAdapter(new Adapter(this, R.layout.drawer_list_item_right,
mDrawerItemRight));
mDrawerListLeft.setOnItemClickListener(new LeftDrawerItemClickListener());
mDrawerListRight.setOnItemClickListener(new RightDrawerItemClickListener());
我的问题是,我不希望右抽屉使用完整的屏幕高度。我只是想让它使用它的一部分,就像这张图片中的红色部分: http://i.stack.imgur.com/IdXAf.jpg
知道我该怎么做吗?
提前致谢!
为两个视图提供宽度 0dp 并在两个视图中添加 android:layout_weight="1"观看次数。
与其使用 ListView,不如使用布局,例如线性、相对,然后将 ListView 放置在该布局内。如果将布局作为 xml 中的最后一个元素放置,则整个布局将成为导航抽屉的布局。然后,您可以根据需要以任何方式将 Listview 放置在布局中。
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#111"/>
<!-- The navigation drawer -->
<RelativeLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">
<!-- Position this list view inside the relative layout the way you want -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
在导航抽屉中使用
android:layout_height="0dp"
android:layout_weight="1"
使用这个,你应该知道的事情......导航抽屉占据其内容的高度。所以它采用 listView,s height .. 给你的 listview 高度(根据你的要求)然后给 listView 背景“透明如下所示
android:layout_height="as you want"
android:background="@color/tranparent"
让它在你的 header 下然后采用线性布局并在你 header 之后编写导航抽屉代码.. 如果你是相对布局然后在你的导航中使用 android:layout_below="your header id"
抽屉.
导航抽屉无需专门为 ListView,您可以使用任何 View/ViewGroup 为此目的,只需设置 gravity="end" 使其成为正确的导航抽屉。
<ListView
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="800dp"
android:layout_gravity="end"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@drawable/pergament"
android:scrollbars="vertical"
android:drawSelectorOnTop="false" />
将上面的代码改为:
<RelativeLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="end">
<ListView
android:id="@+id/right_drawer"
android:layout_width="match_parent"
android:layout_height="500dp"
android:choiceMode="singleChoice"
android:layout_centerVertical="true" />
</RelativeLayout>
根据需要设置ListView的其他属性,并将高度更改为小于800dp的值,因为800dp是相当长的高度,在很多设备上肯定会大于实际屏幕高度。