【发布时间】: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
感谢您的帮助/建议!
【问题讨论】:
-
检查我的答案它肯定会工作
-
你有没有检查我的回答...如果你得到它而不是将它标记为接受
-
为什么会起作用? (它没有)问题不在于如何添加边框,而是如何垂直对齐在多个视图中作为背景绘制的边框!!