安卓绘图分隔符/分隔线在布局?
我想在布局的中间画一条线,把它用作TextView等其他项目的分隔符。 有没有这个好的部件。 我真的不想使用图像,因为它很难与其他组件匹配。 而且我希望它也相对定位。 谢谢
我通常使用这个代码来添加水平线:
<View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/darker_gray"/>
要添加垂直分隔符,请切换layout_width
和layout_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_horizontal.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>