我试图找到一个很好的(r)解决方案来解决当前的布局问题:
我有一个带有2个TextView和2个ImageView的LinearLayout,每对视图(文本或图像)可以选择一个,应该显示为底部边框/下划线。
现在我使用以下方法:我将这些视图中的每一个都包装在另一个LinearLayout中,并使用这样的背景(背景是我的底部边框):
抽拉\ 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
感谢您提供任何帮助/建议!
答案 0 :(得分:0)
申请 将您的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"