在为ListView中的元素测试LinearLayout的一些设计时,我偶然发现了一些奇怪的行为。正如您在添加的代码中看到的,我在水平LinearLayout中有三个TextView。我想为其中一个TextView设置填充,但似乎这个值也应用于其他TextViews作为某种边距(见图片)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp">
<TextView
android:id="@+id/search_list_row_symbol"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:paddingTop="0dp"
android:layout_marginTop="0dp"
android:textSize="16sp"
android:background="@android:color/holo_blue_light"
android:text="O"/>
<TextView
android:id="@+id/search_list_row_name"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:paddingTop="0dp"
android:layout_marginTop="0dp"
android:textSize="16sp"
android:background="@android:color/holo_red_light"
android:text="oxygen"/>
<TextView
android:id="@+id/search_list_row_number"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:paddingTop="0dp"
android:layout_marginTop="0dp"
android:textSize="16sp"
android:background="@android:color/holo_green_light"
android:text="8"/>
</LinearLayout>
在所有TextView上设置android:paddingTop="0dp"
仅在第一个TextView上设置android:paddingTop="16dp"
你们有没有人知道为什么不能在其中一个TextView上独立设置填充?
答案 0 :(得分:1)
一个有点奇怪的错误,对我有用的唯一解决方案是为其他文本视图添加负边距
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp">
<TextView
android:id="@+id/search_list_row_symbol"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:paddingTop="16dp"
android:textSize="16sp"
android:background="@android:color/darker_gray"
android:text="O"/>
<TextView
android:id="@+id/search_list_row_name"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:textSize="16sp"
android:layout_marginTop="-16dp"
android:background="@android:color/white"
android:text="oxygen"/>
<TextView
android:id="@+id/search_list_row_number"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:textSize="16sp"
android:layout_marginTop="-16dp"
android:background="@android:color/darker_gray"
android:text="8"/>
</LinearLayout>
答案 1 :(得分:0)
这种行为似乎是正确的,因为填充应用于视图的内容 - 而不是视图本身。但是,从第一个子视图填充后的剩余子视图似乎是错误的。
作为替代方案,我建议您将kellen({ 'peter piper picked a peck of pickled peppers' }, 'p', 'b')
替换为paddingTop
,它应该可以正常工作。
答案 2 :(得分:0)
因为您只给了一个文本视图填充。如果你想要所有文本视图,你必须将所有三个保持在一个LinearLayout并设置属性,即setPadding()或setPaddingTop()。
我认为这可能会对你有帮助。