【问题标题】:Divider issue in android xml layoutandroid xml布局中的分隔线问题
【发布时间】:2014-03-13 05:57:30
【问题描述】:

我的目标是获得与示例类似的布局。但是,我无法获得按钮栏上方的小线。

我得到的是这样的。

我的 xml 代码是:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="18dp"
    android:layout_marginRight="18dp"
    android:layout_marginTop="24dp"
    >

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:layout_alignParentTop="true"
      android:layout_above="@+id/buttonBarLayout"
      android:showDividers="middle"
      android:divider="?android:dividerHorizontal">

    <TextView
        style="?android:listSeparatorTextViewStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Section header"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:baselineAligned="false"
        android:showDividers="middle"
        android:divider="?android:dividerVertical"
        android:dividerPadding="8dp">

      <TextView
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:textAppearance="?android:textAppearanceMedium"
          android:text="Sample item 1"
          android:layout_gravity="center_vertical"/>

      <ImageButton
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:src="@drawable/ic_action_discard"
          style="?android:borderlessButtonStyle"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:baselineAligned="false"
        android:showDividers="middle"
        android:divider="?android:dividerVertical"
        android:dividerPadding="8dp">

      <TextView
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:textAppearance="?android:textAppearanceMedium"
          android:text="Sample item 2"
          android:layout_gravity="center_vertical"/>

      <ImageButton
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:src="@drawable/ic_action_discard"
          style="?android:borderlessButtonStyle"/>

    </LinearLayout>

  </LinearLayout>

  <LinearLayout
      android:id="@+id/buttonBarLayout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:orientation="horizontal"
      style="?android:buttonBarStyle"
      >

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Discard"
        style="?android:buttonBarButtonStyle"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Save"
        style="?android:buttonBarButtonStyle"/>

  </LinearLayout>

</RelativeLayout>

我相信这条线是中间的分隔线。但是,如果我使用 LinearLayout,分隔线将显示在 Sample item 2 的正下方,这不是我想要的。

那么我怎样才能得到示例显示的内容呢?

【问题讨论】:

  • 您可以使用&lt;View /&gt;在两个按钮之间添加分隔符。
  • @Owen Zhao:Hamid Shatu 提供的答案并没有完全填充分隔线宽度。它在左边和右边留下一些边距。加上宽度设置为 0 dip 使其不可见。

标签: android xml layout divider buttonbar


【解决方案1】:

在您的布局中添加一个额外的View,这将不需要height,如下所示...

<View
    android:layout_width="match_parent"
    android:layout_height="0dip" />

然后将上面的ViewLinearlayout 添加到另一个LinearLayout 中,android:divider="?android:dividerHorizontal" 属性如下...

<LinearLayout
    android:id="@+id/buttonBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:divider="?android:dividerHorizontal"
    android:orientation="vertical"
    android:showDividers="middle" >

    <View
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:background="#000000" />

    <LinearLayout
        style="?android:buttonBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="?android:dividerHorizontal"
        android:orientation="horizontal" >

        <Button
            style="?android:buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Discard" />

        <Button
            style="?android:buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Save" />
    </LinearLayout>

</LinearLayout>

最后,你的布局将是……

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="18dp"
    android:layout_marginRight="18dp"
    android:layout_marginTop="24dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/buttonBarLayout"
        android:layout_alignParentTop="true"
        android:divider="?android:dividerHorizontal"
        android:orientation="vertical"
        android:showDividers="middle" >

        <TextView
            style="?android:listSeparatorTextViewStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Section header" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:baselineAligned="false"
            android:divider="?android:dividerVertical"
            android:dividerPadding="8dp"
            android:orientation="horizontal"
            android:showDividers="middle" >

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:text="Sample item 1"
                android:textAppearance="?android:textAppearanceMedium" />

            <ImageButton
                style="?android:borderlessButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:baselineAligned="false"
            android:divider="?android:dividerVertical"
            android:dividerPadding="8dp"
            android:orientation="horizontal"
            android:showDividers="middle" >

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:text="Sample item 2"
                android:textAppearance="?android:textAppearanceMedium" />

            <ImageButton
                style="?android:borderlessButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/buttonBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:divider="?android:dividerHorizontal"
        android:orientation="vertical"
        android:showDividers="middle" >

        <View
            android:layout_width="match_parent"
            android:layout_height="0dip" />

        <LinearLayout
            style="?android:buttonBarStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="?android:dividerHorizontal"
            android:orientation="horizontal" >

            <Button
                style="?android:buttonBarButtonStyle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Discard" />

            <Button
                style="?android:buttonBarButtonStyle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Save" />
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

结果布局:

【讨论】:

    【解决方案2】:
    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="18dp"
        android:layout_marginRight="18dp"
        android:layout_marginTop="24dp"
        >
    
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:layout_alignParentTop="true"
          android:layout_above="@+id/buttonBarLayout"
          android:showDividers="middle"
          android:divider="?android:dividerHorizontal">
    
        <TextView
            style="?android:listSeparatorTextViewStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Section header"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:baselineAligned="false"
            android:showDividers="middle"
            android:divider="?android:dividerVertical"
            android:dividerPadding="8dp">
    
          <TextView
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:textAppearance="?android:textAppearanceMedium"
              android:text="Sample item 1"
              android:layout_gravity="center_vertical"/>
    
          <ImageButton
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/ic_action_discard"
              style="?android:borderlessButtonStyle"/>
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:baselineAligned="false"
            android:showDividers="middle"
            android:divider="?android:dividerVertical"
            android:dividerPadding="8dp">
    
          <TextView
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:textAppearance="?android:textAppearanceMedium"
              android:text="Sample item 2"
              android:layout_gravity="center_vertical"/>
    
          <ImageButton
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:src="@drawable/ic_action_discard"
              style="?android:borderlessButtonStyle"/>
    
        </LinearLayout>
    
      </LinearLayout>
    
      <LinearLayout
          android:id="@+id/buttonBarLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:orientation="Vertical"
          style="?android:buttonBarStyle"
          >
          <View android:id="@+id/divider"
            android:layout_widht="match_parent"
            android:layout_height = "1dp"
            android:background="@android:color/black"/>
    
      <LinearLayout
          android:id="@+id/buttonBarLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
           android:orientation="horizontal"
          style="?android:buttonBarStyle"
          >
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Discard"
            style="?android:buttonBarButtonStyle"/>
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Save"
            style="?android:buttonBarButtonStyle"/>
    
      </LinearLayout>
     </LinearLayout>
    
    </RelativeLayout>
    

    【讨论】:

      【解决方案3】:

      检查下面的布局。我做了一些更改以在 ButtonBarLayout 上方添加水平分隔线。

      <?xml version="1.0" encoding="utf-8"?>
      
      <RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
      
      <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/buttonBarLayout"
        android:showDividers="middle"
        android:divider="?android:dividerHorizontal"
        android:layout_marginLeft="18dp"
        android:layout_marginRight="18dp"
        android:layout_marginTop="24dp" >
      
      <TextView
          style="?android:listSeparatorTextViewStyle"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="Section header"/>
      
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          android:baselineAligned="false"
          android:showDividers="middle"
          android:divider="?android:dividerVertical"
          android:dividerPadding="8dp">
      
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textAppearance="?android:textAppearanceMedium"
            android:text="Sample item 1"
            android:layout_gravity="center_vertical"/>
      
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:borderlessButtonStyle"/>
      
      </LinearLayout>
      
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          android:baselineAligned="false"
          android:showDividers="middle"
          android:divider="?android:dividerVertical"
          android:dividerPadding="8dp">
      
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textAppearance="?android:textAppearanceMedium"
            android:text="Sample item 2"
            android:layout_gravity="center_vertical"/>
      
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:borderlessButtonStyle"/>
      
      </LinearLayout>
      
      </LinearLayout>
      
      <LinearLayout android:id="@+id/buttonBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="vertical"
        style="?android:buttonBarStyle">
      
        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#F1F1F1" />
      
        <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        style="?android:buttonBarStyle">
      
      <Button
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:text="Discard"
          style="?android:buttonBarButtonStyle" />
      
      <Button
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:text="Save"
          style="?android:buttonBarButtonStyle" />
      </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        您必须将 id 赋予按钮线性布局上方的线性布局,并将视图放置在按钮线性布局和其上方的线性布局之间。

        <?xml version="1.0" encoding="utf-8"?>
        
        <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="18dp"
            android:layout_marginRight="18dp"
            android:layout_marginTop="24dp">
        
          <LinearLayout
              android:id="@+id/layout1"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:layout_alignParentTop="true"
              android:layout_above="@+id/buttonBarLayout"
              android:showDividers="middle"
              android:divider="?android:dividerHorizontal">
        
            <TextView
                style="?android:listSeparatorTextViewStyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Section header"/>
        
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:baselineAligned="false"
                android:showDividers="middle"
                android:divider="?android:dividerVertical"
                android:dividerPadding="8dp">
        
              <TextView
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:textAppearance="?android:textAppearanceMedium"
                  android:text="Sample item 1"
                  android:layout_gravity="center_vertical"/>
        
              <ImageButton
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:src="@drawable/ic_action_discard"
                  style="?android:borderlessButtonStyle"/>
        
            </LinearLayout>
        
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:baselineAligned="false"
                android:showDividers="middle"
                android:divider="?android:dividerVertical"
                android:dividerPadding="8dp">
        
              <TextView
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:textAppearance="?android:textAppearanceMedium"
                  android:text="Sample item 2"
                  android:layout_gravity="center_vertical"/>
        
              <ImageButton
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:src="@drawable/ic_action_discard"
                  style="?android:borderlessButtonStyle"/>
        
            </LinearLayout>
        
          </LinearLayout>
        
        
          <View
               android:id="@+id/view1"
        android:layout_width="fill_parent"
         android:layout_height="1dp"
          android:layout_below="@+id/layout1"
         android:background="#000000" />
        
          <LinearLayout
              android:id="@+id/buttonBarLayout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentBottom="true"
        
              android:orientation="horizontal"
              style="?android:buttonBarStyle">
        
        
        
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Discard"
                style="?android:buttonBarButtonStyle"
                />
        
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Save"
                style="?android:buttonBarButtonStyle"/>
        
          </LinearLayout>
        
        </RelativeLayout>
        

        【讨论】:

          猜你喜欢
          • 2014-09-15
          • 2011-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-10
          • 1970-01-01
          • 2011-10-25
          相关资源
          最近更新 更多