Как я могу автоматически применить родительский стиль?

#android #android-layout #android-xml #android-gui

#Android #android-layout #android-xml #android-графический интерфейс

Вопрос:

У меня есть макет, который содержит пользовательский макет. Я хотел бы передать стиль от одного элемента к другому. У меня есть класс, который раздувает макет, который я могу опубликовать при необходимости. Этот элемент дизайна добавляется двумя разными макетами с разными размерами в зависимости от того, что требуется.

 Child layout

<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal">
    <TableRow android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_width="fill_parent" android:id="@ id/tableRow1">
        <Button android:text="1" android:id="@ id/nb1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:layout_margin="1dip" android:minWidth="70dip"></Button>
        <Button android:text="2" android:id="@ id/nb2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:layout_margin="1dip" android:minWidth="70dip"></Button>
        <Button android:text="3" android:id="@ id/nb3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:layout_margin="1dip" android:minWidth="70dip"></Button>
    </TableRow>
</TableLayout>
  

И вот родительский макет

 Parent Layout

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <pearsonartphoto.AJEG.number_viewer android:id="@ id/numberviewer" style="@style/bigViewer" android:layout_alignParentRight="true" android:layout_alignParentBottom="true">
    </pearsonartphoto.AJEG.number_viewer>
</RelativeLayout>
  

Что я хотел бы сделать, так это передать стиль и повторить стиль во всех дочерних элементах или, по крайней мере, в элементах TextView. Что мне нужно сделать, чтобы это произошло?

Ответ №1:

Насколько я знаю, в Android нет способа наследовать стиль родительского элемента для дочерних представлений, а не просто вложив их!

то, что вы могли бы сделать, это применить стиль к родительскому элементу, скажем, styleA, а затем применить стиль к дочерним элементам, скажем, styleB

и наследование может быть выполнено в стилях, я имею в виду, что styleB может наследовать свойства от styleA, а также переопределять некоторые из его родительских значений

fill_parent wrap_content #00FF00 моноширинное пространство

fill_parent wrap_content #00FF00 моноширинное пространство

плохая новость в том, что вы должны указывать стиль в каждом дочернем элементе 🙁

Я думаю, что это единственный способ придать стиль некоторому элементу, если вы хотите придать стиль группе элементов, тогда вы должны определить тему и применить ее к действию или к приложению, обычно это делается в коде, но это можно сделать и программно.