我想让我的NavigationDrawer就像在这个应用程序中一样
更具体地说,我想在右侧添加小1像素边框
但这是我抽屉里的东西
这是抽屉片段的xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E7E7E7"
android:choiceMode="singleChoice"
android:dividerHeight="0.5dp" />
我该怎么做?
答案 0 :(得分:4)
试试这个,
DrawerLayout mDrawerLayout;
onCreate(Bundle ...){
//...
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
//...
}
修改强>
您需要添加一个View
和ListView
,并将两个LinearLayout
水平包装并同时包含一些重量。在这里,我将0.99
权重listView
和0.01
权重赋予view
,您可以根据自己的要求进行更改。
<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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ListView android:id="@+id/drawer_list"
android:layout_weight="0.99"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E7E7E7"
android:choiceMode="singleChoice"
android:dividerHeight="0.5dp" />
<View
android:layout_weight="0.01"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#eeccbb"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
答案 1 :(得分:2)
我
你可以在10秒内完成。 在xml中使用图层列表并将其设置为 列表视图的背景 并向Listview提供1dp的填充权
用您的垂直边框颜色替换颜色#ff0000(红色) #00c0c0和你的listview颜色 。 别忘了在listview中给出1dp的正确填充
Layerlist xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff0000"/>
</shape>
</item>
<item
android:right="1dp" >
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00c0c0"/>
</shape>
</item>
</layer-list>
答案 2 :(得分:1)
我想要有人知道他在做什么,而不仅仅是随意复制 来自互联网的答案
嗯,你不会做比九条路更好的事情:
上面的9补丁有一个0.5dp (base xhdpi)
黄色边框用于说明目的。顶部和左侧防护装置(黑色线条)定义了可伸展区域。
请注意,右侧的保护线完整,端到端。这意味着顶部和底部不会有任何填充。但是,底部的防护线从最左边的px开始,并在黄色边框之前完成。当您将此9patch设置为列表视图时,底部保护线将确保向右填充0.5dp(黄色边框的宽度)。
这种方法确实需要一些工作。您需要创建与存储桶一样多的9patch drawable。如果您需要0.5dp边框,则每个存储桶的黄色边框宽度将不同:
xxxhdpi: 2 px
xxhdpi: 1.5 px
xhdpi: 1 px
hdpi: 0.75 px
.... and so on
有关9patch drawables的更多信息:Link
另一种方法(此处已经建议)是使用View
作为边界。在这种情况下,最轻的安排(这里没有提到)是使用FrameLayout并将ListView和边框放在其中:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- marginRight set to 0.5dp -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="0.5dp"
android:background="#E7E7E7"
android:choiceMode="singleChoice"
android:dividerHeight="0.5dp" />
<!-- gravity set to right & background set to border color -->
<View
android:layout_width="0.5dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="@color/some_color"/>
</FrameLayout>
你最终会拥有一个ViewGroup&amp;在这种情况下,视图作为装饰。 9patch将是最佳解决方案。随便挑选。
答案 3 :(得分:0)
ETA:Apurva的解决方案看起来更清洁。
我对导航抽屉并不熟悉,但您可以通过在ListView之后向DrawerLayout添加视图来创建垂直分隔符。
<View
android:layout_height="fill_parent"
android:layout_width="2dip"
android:background="@android:color/some_color" />
答案 4 :(得分:0)
您必须将背景设置为具有右边框的自定义drawable,如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-5dp" android:bottom="-5dp" android:left="-5dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke android:width="4dp" android:color="#000000" /> <!--BORDER COLOR-->
</shape>
</item>
<item android:right="5dp">
<shape android:shape="rectangle">
<solid android:color="#E7E7E7" />
</shape>
</item>
</layer-list>
我使用随机dp作为边框,我将其设置为5dp,边框颜色为黑色,将其更改为您需要的颜色!
答案 5 :(得分:0)
试试这个
<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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ListView android:id="@+id/drawer_list"
android:layout_weight="0.99"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E7E7E7"
android:choiceMode="singleChoice"
android:dividerHeight="0.5dp" />
<View
android:layout_weight="0.01"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#eeccbb"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
video on youtube 尝试这个设计材料githup link
答案 6 :(得分:0)
setDrawerShadow()方法用于设置任何自定义drawable / resource 作为导航抽屉左/右边框。
您可以查看:Navigation Drawer -> setDrawerShadow() API usage info
你需要做两件事:
(1)在res中定义你想要的颜色 - &gt; colors.xml作为可绘制元素
<drawable name="drawer_shadow">FFE7E7E7</drawable>
(2)在MainActivity.java中使用此元素,将其指定为抽屉阴影drawable:
<强> activity_main.xml中强>
<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"
>
...
</android.support.v4.widget.DrawerLayout>
<强> MainActivity.java 强>
onCreate(Bundle mSavedBundle) {
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
}
这将为导航抽屉左/右边缘添加颜色“FFE7E7E7”