2015-05-25 2 views
0

При тестировании некоторых конструкций для LinearLayout для элементов в ListView я наткнулся на какое-то странное поведение. Как вы можете видеть в добавленном коде, у меня есть три TextViews в горизонтальном LinearLayout. Я хотел установить дополнение для одного из этих TextViews, но кажется, что это значение также применяется к другим TextViews как к определенному краю (см. Рисунки).Невозможно самостоятельно установить прописку в 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> 

Набор android:paddingTop="0dp" на всех TextViews padding_top_set_to_0

Установите android:paddingTop="16dp" только на первом TextView padding_top_set_to_16

Кто-нибудь из вас знает, почему обивка не могут быть установлены независимо друг от друга на одном из этих TextViews?

+0

Что происходит, если установлено 'android: marginTop =" 16dp "' только на первом TextView? – Ircover

+0

Вы имеете в виду 'android: layout_marginTop =" 16dp "'? Кажется, что применяется маржа только к первому TextView. – PieterV

+0

Да, 'android: layout_marginTop'. Это то, что вы хотите? – Ircover

ответ

1

Немного странно ошибка, единственное решение, которое работало для меня добавляет отрицательный запас для другого 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="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> 
0

поведение кажется правильным, как набивка применяется к содержанию зрения - не в просматривать себя. Тем не менее, оставшиеся дочерние представления после заполнения из первого детского представления кажутся ошибочными.

В качестве альтернативы, я предлагаю вам заменить paddingTop на layout_marginTop, и он должен работать нормально.

0

Потому что вы добавили только один текстовый вид. Если вам нужен весь текстовый вид, вы должны будете сохранить все три в пределах одного LinearLayout и установить свойство i.e setPadding() или setPaddingTop().

Я думаю, что это может вам помочь.

Смежные вопросы