安卓绘图分隔符/分隔线在布局?

我想在布局的中间画一条线,把它用作TextView等其他项目的分隔符。 有没有这个好的部件。 我真的不想使用图像,因为它很难与其他组件匹配。 而且我希望它也相对定位。 谢谢

我通常使用这个代码来添加水平线:

<View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/darker_gray"/> 

要添加垂直分隔符,请切换layout_widthlayout_height

改进Alex Kucherenko和Dan Dar3提供的答案

我将这添加到我的样式中:

 <style name="Divider"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> <item name="android:background">?android:attr/listDivider</item> </style> 

然后在我的布局是更less的代码和更简单的阅读。

 <View style="@style/Divider"/> 

在你想要的divider的布局中添加这个(修改属性以适合你的需要):

 <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:src="@android:drawable/divider_horizontal_dark" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="fitXY" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingBottom="2dp" android:paddingTop="2dp" /> 

你可以在LinearLayout使用它:

 android:divider="?android:dividerHorizontal" android:showDividers="middle" 

例如:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="?android:dividerHorizontal" android:showDividers="middle" android:orientation="vertical" > <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="abcd gttff hthjj ssrt guj"/> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="abcd"/> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="abcd gttff hthjj ssrt guj"/> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="abcd"/> </LinearLayout> 
 <TextView android:id="@+id/line" style="?android:attr/listSeparatorTextViewStyle" android:paddingTop="5dip" android:gravity="center_horizontal" android:layout_below="@+id/connect_help" android:layout_width="match_parent" android:layout_height="1dp" android:background="#000" /> 

使用这个代码。 我会帮你的

 <LinearLayout android:layout_width="0dip" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="1" android:divider="?android:dividerHorizontal" android:gravity="center" android:orientation="vertical" android:showDividers="middle" > 

如果使用actionBarSherlock ,则可以使用com.actionbarsherlock.internal.widget.IcsLinearLayout类来支持分隔符并在视图之间显示它们。

用法示例:

 <com.actionbarsherlock.internal.widget.IcsLinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:divider="@drawable/divider" android:dividerPadding="10dp" android:orientation="vertical" android:showDividers="beginning|middle|end" > ... children... 

res / drawable / divider.xml:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:height="2dip" /> <solid android:color="#FFff0000" /> </shape> 

请注意,由于某种原因,graphicsdevise器中的预览显示“android.graphics.bitmap_delegate.nativeRecycle(I)Z”。 不知道它是什么意思,但它可以被忽略,因为它适用于新版本的Android和旧版本(在Android 4.2和2.3testing)。

似乎错误只显示使用graphicsdevise器的API17。

这是你的答案..这是一个在控件之间画线的例子。

 <TextView android:id="@+id/textView1" style="@style/behindMenuItemLabel1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="1dp" android:text="FaceBook Feeds" /> <View android:layout_width="fill_parent" android:layout_height="2dp" android:background="#d13033"/> <ListView android:id="@+id/list1" android:layout_width="350dp" android:layout_height="50dp" /> 

这段代码在两个控件之间画线

它增加了一个水平分隔线到你布局的任何地方。

  <TextView style="?android:listSeparatorTextViewStyle" android:layout_width="fill_parent" android:layout_height="wrap_content"/> 

添加这个视图; 在你的textviews之间绘制一个分隔符

 <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000" /> 
 //for vertical line: <View android:layout_width="1dp" android:layout_height="fill_parent" android:background="#00000000" /> //for horizontal line: <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#00000000" /> //it works like a charm 

运行时版本:

 View dividerView = new View(getContext()); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, UIUtils.dpToPix(getContext(), 1)); dividerView.setLayoutParams(lp); TypedArray array = getContext().getTheme() .obtainStyledAttributes(new int[] {android.R.attr.listDivider}); Drawable draw = array.getDrawable(0); array.recycle(); dividerView.setBackgroundDrawable(draw); mParentLayout.addView(dividerView); 

使用这个xml代码添加垂直线

  <View android:layout_width="1dp" android:layout_height="match_parent" android:layout_centerVertical="true" android:background="#000000" /> 

使用这个XML代码添加水平线

 <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000" /> 
 <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="2dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="2dp" android:scaleType="fitXY" android:src="?android:attr/listDivider" /> 

只写这个:

  android:divider="?android:dividerHorizontal" android:showDividers="middle" 

完整的例子:

 <LinearLayout android:id="@+id/llTipInformation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvServiceRating" android:orientation="horizontal" android:divider="?android:dividerHorizontal" android:layout_marginTop="@dimen/activity_horizontal_margin" android:showDividers="middle"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="@string/main.msg.tippercent" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/colorWhite" android:layout_marginTop="@dimen/activity_vertical_margin"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="@string/main.msg.tiptotal" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/colorWhite" android:layout_marginTop="@dimen/activity_vertical_margin"/> </LinearLayout> 

我通常使用这个代码:

 <ImageView android:id="@+id/imageView2" android:layout_width="match_parent" android:layout_height="1dp" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="#aa000000" /> 

如果在布局中有一个对象,并且想要在ImageView中使用此属性,请使用下面的设置行:

 android:layout_below="@+id/textBox1" 

如果你打算使用它,最好的办法是

styles.xml:

 <style name="Seperator"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> <item name="android:background">@color/light_color</item> </style> 

现在在你的布局,只需添加它像:

 <View style="@style/Seperator" /> 

要完成CamilleSévigny答案,您还可以定义自己的线条形状,例如自定义线条颜色。

在可绘制目录中定义一个xml形状。 line_horizo​​ntal.xml:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:shape="line"> <stroke android:width="2dp" android:color="@android:color/holo_blue_dark" /> <size android:width="5dp" /> </shape> 

在您的布局中使用此行以及所需的属性:

  <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="2dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="2dp" android:src="@drawable/line_horizontal" /> 

它非常简单。 只需创build一个黑色背景颜色的视图。

 <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#000"/> 

这将创build一个背景颜色的水平线。 您也可以像其他视图一样添加边距,填充等其他属性。

将空间分成两个相等的部分:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:divider="?android:dividerHorizontal" android:showDividers="end"></LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></LinearLayout> </LinearLayout> 

注意一个部分最后包含一个分隔符

解决scheme简单

只需在布局中添加此代码,并将“Id_of__view_present_above”replace为视图的ID,在其下面您需要分隔符。

 <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#c0c0c0" android:id="@+id/your_id" android:layout_marginTop="16dp" android:layout_below="@+id/Id_of__view_present_above" /> 

这将帮助你解决这个问题。 在这里创build一个小视图,将黑线作为两个视图之间的分隔符。

  <View android:layout_width="3dp" android:layout_height="wrap_content" android:background="@android:color/black" /> 

例如,如果您为您的物品使用recyclerView:

在build.gradle写道:

 dependencies { compile 'com.yqritc:recyclerview-flexibledivider:1.4.0' 

如果要设置颜色,大小和边距值,可以指定如下:

 RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.addItemDecoration( new HorizontalDividerItemDecoration.Builder(this) .color(Color.RED) .sizeResId(R.dimen.divider) .marginResId(R.dimen.leftmargin, R.dimen.rightmargin) .build()); 
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <item android:bottom="0dp" android:left="-2dp" android:right="-2dp" android:top="-2dp"> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="@color/divider" /> </shape> </item> 

使用这个添加一个水平的黑线:

 <LinearLayout android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000" android:layout_marginTop="10dp"/> 

像这样添加一个水平 linearLayout

 <LinearLayout android:id="@+id/LL_Seperator" android:layout_width="1dp" android:layout_height="fill_parent" android:layout_marginRight="5dp" android:layout_toLeftOf="@+id/imgBut_Settings" android:background="#37000000" android:orientation="horizontal" > </LinearLayout>