2013-07-30 2 views
2

У меня есть LinearLayout, у которого есть связанный с ним стиль, который дает контейнер 20dp отступов. Это отлично подходит для 99% элементов, содержащихся внутри. Может быть один элемент, который я хотел бы расширить по экрану (android: layout_width = "match_parent") и игнорировать набор дополнений, содержащий LinearLayout. Это возможно? Или мне нужно удалить стиль из содержащего LinearLayout и применить его к каждому другому элементу отдельно?Может ли дочерний элемент в Android игнорировать его содержащий стиль?

(некоторые атрибуты, исключенные для краткости)

<LinearLayout 
    android:padding="20dp"> 

    <TextView 
     android:id="@+id/txtTitle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/txtDate" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <!-- Would like this to ignore padding, extend fully. --> 
    <TextView 
     android:id="@+id/txtExperienceTitle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     style="@style/sub_header_title" /> 

</LinearLayout> 

ответ

3

Да, вы не можете действительно выбрать, как это. Я удаляю прокладку из LinearLayout и применяю margin к детям.

Чтобы расширить то, что сказал loeschg в комментарии ниже, я бы рекомендовал использовать «детский стиль». Поскольку каждый ребенок должен иметь только левый/правый поля, он сохранит некоторую типизацию и будет выглядеть более чистым, чтобы иметь только одну строку для каждого ребенка, а не устанавливать как левую, так и правую отдельно.

+1

Я не знаю способа сделать это, либо. Я думаю, что @Geobits сказал правильно. Добавляя к тому, что он сказал, я предлагаю создать размерный файл, который содержит определенные значения размеров (аналогично Strings.xml), если вы еще этого не сделали и используете это значение в xml. Это, по крайней мере, позволит вам следовать некоторым сухим принципам. – loeschg

0

Вы не можете связаться с контейнером. Примените style к элементам, а не к контейнеру, если у вас есть исключение.

-1

Да Это проигнорирует его, макет, который вы написали, примерно такой.

Общее мышление

int x = 7; 
x = 20; 

Show me that x = 7; ---You wanted to do something like this whit your layout 

<TextView 
    android:id="@+id/txtTitle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/txtDate" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<!-- Would like this to ignore padding, extend fully. --> 
<TextView 
    android:id="@+id/txtExperienceTitle" 
    style="@style/sub_header_title" // --- Style before adding laout_width if you want the layout to be match_parent 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    /> 

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