我想添加一个分频器水平线性布局,但我越来越行不通。 分频器只是不显示。 我与Android,总新手。
这是我的布局XML:
<RelativeLayout 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"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/llTopBar"
android:orientation="horizontal"
android:divider="#00ff00"
android:dividerPadding="22dip"
android:showDividers="middle"
>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="asdf" />
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="asdf"
/>
</LinearLayout>
</RelativeLayout>
Answer 1:
用这个水平分割线
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/honeycombish_blue" />
这对于垂直分隔
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/honeycombish_blue" />
或者您使用的LinearLayout分频器,用于水平分隔
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:height="1dp"/>
<solid android:color="#f6f6f6"/>
</shape>
在的LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/divider"
android:orientation="vertical"
android:showDividers="middle" >
如果你想用户垂直分隔然后代替android:height="1dp"
在形状上使用android:width="1dp"
提示: 不要忘了android:showDividers
项目。
Answer 2:
试试这个,在创建分隔res/drawable
的文件夹:
vertical_divider_1.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="1dip" />
<solid android:color="#666666" />
</shape>
并使用divider
像这样的LinearLayout属性:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
android:divider="@drawable/vertical_divider_1"
android:dividerPadding="12dip"
android:showDividers="middle"
android:background="#ffffff" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
注: android:divider
仅在Android 3.0的(API级别11)或更高版本中提供。
Answer 3:
这是很容易添加分隔布局,我们并不需要一个单独的视图。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:divider="?android:listDivider"
android:dividerPadding="2.5dp"
android:orientation="horizontal"
android:showDividers="middle"
android:weightSum="2" ></LinearLayout>
上面的代码使垂直分隔LinearLayout
Answer 4:
更新:预蜂窝使用程序兼容性
如果您使用的是程序兼容性库V7您可能需要使用LinearLayoutCompat
视图。 使用这种方法,你可以在Android 2.1,2.2和2.3使用绘制分隔。
示例代码:
<android.support.v7.widget.LinearLayoutCompat
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:showDividers="middle"
app:divider="@drawable/divider">
可拉伸/ divider.xml:(分压器上的顶部和底部一些填充)
<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="2dp"
android:insetTop="2dp">
<shape>
<size android:width="1dp" />
<solid android:color="#FFCCCCCC" />
</shape>
</inset>
非常重要的注意事项:本LinearLayoutCompat
视图不扩展LinearLayout
,并为此你不应该使用的android:showDividers
或android:divider
性质,但自定义的: app:showDividers
和app:divider
。 在代码中,你也应该使用LinearLayoutCompat.LayoutParams
不是LinearLayout.LayoutParams
!
Answer 5:
我今天刚刚碰到了同样的问题。 由于以前的答案表明,这个问题从分隔标签使用一种颜色的茎,而不是绘制。 然而,不是写我自己绘制的xml,我更喜欢使用主题属性尽可能。 您可以使用android:ATTR / dividerHorizontal和android:ATTR / dividerVertical得到一个预定义的绘制,而不是:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:showDividers="middle"
android:divider="?android:attr/dividerVertical"
android:orientation="horizontal">
<!-- other views -->
</LinearLayout>
属性是API 11及更高版本。
此外,如在他的回答bocekm提到的,dividerPadding属性不会在垂直分隔的两侧加上微胖,因为人们可能承担的风险。 相反,它定义了顶部和底部填充,因此可能会截断除法如果它太大。
Answer 6:
无奈的是,您必须启用显示在你的活动从代码分隔。 例如:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the view to your layout
setContentView(R.layout.yourlayout);
// Find the LinearLayout within and enable the divider
((LinearLayout)v.findViewById(R.id.llTopBar)).
setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
}
Answer 7:
您可以使用内置的分频器,这会为两个方向工作。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="?android:attr/listDivider"
android:orientation="horizontal"
android:showDividers="middle">
Answer 8:
您的分频器可能无法显示由于过大dividerPadding。 您可以设置22dip,这意味着分频器由22dip从上截断,通过22dip从底部。 如果你的布局高度小于或等于44dip则没有分频器是可见的。
Answer 9:
你必须创建像TextView的或分体的ImageView的任何视图然后设置为背景,如果你有其他的图像使用的颜色作为背景。
希望这可以帮助你。
Answer 10:
在得到绘制顺序,分频器LinearLayout
必须有一定的高度,同时ColorDrawable
(这基本上是#00ff00
以及其他任何硬编码的颜色)没有。 简单的(正确)的方式来解决这个问题,就是要包装你的颜色为一些Drawable
与预定高度,如shape
绘制
Answer 11:
您可以使用IcsLinearLayout,在ActionBarSherlock库所使用,或使用正常的API上可用的ICS(或复制其代码)。
编辑:您还可以使用LinearLayoutICS的支持库的使用。 我做了一篇关于它在这里 。
您可以使用相同的技术来创建可绘制如图所示这里 ,或创建一个9补丁绘制。
Answer 12:
如果答案卡皮尔大桶工作不尝试是这样的:
绘制/ divider_horizontal_green_22.xml
<size android:width="22dip"/>
<solid android:color="#00ff00"/>
</shape>
布局/ your_layout.xml
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/llTopBar"
android:orientation="horizontal"
android:divider="@drawable/divider_horizontal_green_22"
android:showDividers="middle"
>
我遇到其中填充属性不能正常工作的问题,所以我只好直接在分压器设置分隔条的高度。
注意:
如果你想在垂直的LinearLayout使用它,使一个新的,就像这样: 绘制/ divider_vertical_green_22.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="22dip"/>
<solid android:color="#00ff00"/>
</shape>
文章来源: How to add (vertical) divider to a horizontal LinearLayout?