Как работает стиль Android: attr?

Я пытаюсь создать пользовательский интерфейс Android с помощью макетов. Я начну со следующего:

<TextView
    android:id="@+id/..."
    android:layout_marginTop="8dip"
    android:text="..."
    style="?android:attr/listSeparatorTextViewStyle"/>

И это выглядит хорошо (все заглавные буквы, мелкий шрифт, разделительная полоска под ним). Теперь я хочу расширить стиль, поэтому я изменил его следующим образом:

<TextView
    android:id="@+id/..."
    android:layout_marginTop="8dip"
    android:text="..."
    style="@style/section_title"/>

В стиле:

<style name="section_title" parent="@android:attr/listSeparatorTextViewStyle">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
</style>

И это не работает (шрифт правильный, но разделительная линия исчезла).

Как получилось ... это?

Ответы на вопрос(1)

style="?android:attr/listSeparatorTextViewStyle"

Вы используете стиль, указанный этим атрибутом (listSeparatorTextViewStyle). Если вы посмотрите на платформуthemes.xml вы увидите, что стиль, который фактически используется для этого атрибута,Widget.TextView.ListSeparator.White, Так что этоstyle Вы должны расширить в своем собственном стиле.

К сожалению, этот стиль является закрытым, и вы не можете его расширять или не должны его расширять (для справки см.этот отчет об ошибке от гугл). Ваш лучший вариант будет копировать весь этот стиль,Widget.TextView.ListSeparator.White(Widget.TextView.ListSeparator также не является общедоступным, поэтому пришлось бы также скопировать это) в своем собственном стиле и использовать его вместо расширения стиля с платформы Android (см.этот ответ по ссылке выше).

ВАШ ОТВЕТ НА ВОПРОС