【问题标题】:Horizontal LinearLayout with "enabled/selected" border具有“启用/选定”边框的水平线性布局
【发布时间】:2015-06-03 12:47:53
【问题描述】:

我试图为我当前的布局问题找到一个好的(r) 解决方案:

我有一个带有 2 个 TextViews 和 2 个 ImageViews 的 LinearLayout,并且可以在每对视图(文本或图像)中选择一个,它应该显示为底部边框/下划线。

现在我使用以下方法:我将这些视图中的每一个都包装在另一个 LinearLayout 中,并像这样用作背景(背景是我的底部边框):

drawable\preferred_border:

    <item
    android:bottom="1dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
    <shape android:shape="rectangle" >
        <stroke
            android:width="2dp"
            android:color="@color/nd_blue" />

        <solid android:color="#00FFFFFF" />


    </shape>
</item>

(这是我在 stackoverflow 上发现的添加底部边框的“hack”)

这种方法效果很好,但有一个缺点:文本/图像与其边框之间的距离是通过最内层视图的 paddingBottom 完成的(边框在另一个包装 LinearLayout 中设置为背景)。现在,如果文本和图像的高度不同,则底部边框不会在垂直位置对齐!

它在我的应用中的外观示例:

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true">

        <LinearLayout
            android:id="@+id/wrapper_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_marginLeft="3dp"
            android:layout_marginRight="3dp"
            android:background="@drawable/preferred_border">
            <TextView
                android:id="@+id/one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:singleLine="true"
                android:text="@string/one"

                android:paddingBottom="12dp"
                />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/wrapper_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_marginLeft="10dp"
            android:layout_marginRight="3dp"
            android:background="@drawable/preferred_border">
                <TextView
                    android:id="@+id/twot"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center_vertical"
                    android:singleLine="true"
                    android:text="@string/two"

                    android:paddingBottom="12dp"
                    />
        </LinearLayout>
    </LinearLayout>

这对 ImageViews 相同,只是它显然使用的是 ImageView。整个东西也被打包到一个RelativeLayout中。

现在我尝试通过稍微调整填充和图像大小来尽可能地对齐它们,但这不是一个好的方法。我希望在 android 中有一个使用良好布局技巧的干净解决方案:p

感谢您的帮助/建议!

【问题讨论】:

  • 检查我的答案它肯定会工作
  • 你有没有检查我的回答...如果你得到它而不是将它标记为接受
  • 为什么会起作用? (它没有)问题不在于如何添加边框,而是如何垂直对齐在多个视图中作为背景绘制的边框!!

标签: android android-layout


【解决方案1】:

应用这个 在你的drawable中保存为customborder_xml.xml

<?xml version="1.0" encoding="UTF-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
        <stroke android:width="1dp" android:height="1dp"
            android:color="#000000" />
                   <padding android:left="10dp" android:top="10dp"   android:right="10dp"
            android:bottom="10dp" />


        <corners android:radius="1dp" android:bottomRightRadius="5dp"
            android:bottomLeftRadius="0dp" android:topLeftRadius="5dp"
            android:topRightRadius="0dp" />
    </shape>
  </item>
</layer-list>

并将其设置为您的布局

android:background="@drawable/customborder"

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 2015-07-27
    • 1970-01-01
    • 2015-07-10
    • 2021-10-01
    • 2011-08-08
    • 1970-01-01
    • 2014-01-05
    • 2017-11-20
    相关资源
    最近更新 更多