如何(垂直)分隔添加到一个水平的LinearLayout?(How to add (vertical

2019-07-20 16:40发布

我想添加一个分频器水平线性布局,但我越来越行不通。 分频器只是不显示。 我与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:showDividersandroid:divider性质,但自定义的: app:showDividersapp:divider 。 在代码中,你也应该使用LinearLayoutCompat.LayoutParams不是LinearLayout.LayoutParams



Answer 5:

我今天刚刚碰到了同样的问题。 由于以前的答案表明,这个问题从分隔标签使用一种颜色的茎,而不是绘制。 然而,不是写我自己绘制的xml,我更喜欢使用主题属性尽可能。 您可以使用android:ATTR / dividerHorizo​​ntal和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_horizo​​ntal_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?