Я думаю, что более «глобальные» стили всегда перекрываются более «локальными» стилями. Например, если я переопределю все кнопки, чтобы иметь textSize = 40dip (примените этот стиль в качестве темы для приложения), а затем применю другой стиль к определенной кнопке, которая говорит textSize = 10dip, то эта конкретная кнопка должна получить 10dip textSize.
И вот как это обычно работает. Но не когда дело доходит до maxHeight. Вот сценарий:
В моем styles.xml у меня есть один стиль, где я наследую кнопку по умолчанию и меняю textSize и minHeight, а затем другой стиль, который устанавливает некоторые другие значения (но также наследует от кнопки), например так:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Button" parent="@android:style/Widget.Button">
<item name="android:textSize">26dip</item>
<item name="android:minHeight">60dip</item>
</style>
<style name="ButtonHeader" parent="@android:style/Widget.Button">
<item name="android:textSize">18dip</item>
<item name="android:minWidth">70dip</item>
<item name="android:maxHeight">10dip</item>
</style>
</resources>
Я применяю первый Стиль в качестве темы для моей Деятельности, которая увеличивает все кнопки (minHeight = 60dip). Но у меня есть «заголовок» (где у меня есть несколько других кнопок), для которого я не хочу иметь minHeight 60dip, и для этих кнопок я хочу использовать ButtonHeader , установив maxHeight равным 10dip.
В моем header.xml это выглядит так:
<Button style="@style/ButtonHeader" android:text="UPP" android:id="@+id/Header_Button_UPP" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="ALT" android:id="@+id/Header_Button_ALT" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="NAV" android:id="@+id/Header_Button_NAV" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
<Button style="@style/ButtonHeader" android:text="HIS" android:id="@+id/Header_Button_HIS" android:layout_width="wrap_content" android:layout_height="wrap_content" ></Button>
Я специально настраиваю кнопки, переопределяя "глобальную" тему. Это работает в некоторых частях; textSize для этих кнопок заголовка правильно установлен на 18dip, но maxHeight игнорируется - высота этих кнопок также увеличивается до 60dip.
Если я в стиле ButtonHeader установлю android: minHeight = "100dip", то кнопки в заголовке увеличатся в размере до 100dip, переопределяя тему.
Но, как указано выше, когда у меня установлен android: maxHeight, ничего не происходит.
Чего мне не хватает?