Стили, minHeight / maxHeight: я не могу получить maxHeight для переопределения темы minHeight - PullRequest
6 голосов
/ 07 января 2010

Я думаю, что более «глобальные» стили всегда перекрываются более «локальными» стилями. Например, если я переопределю все кнопки, чтобы иметь 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, ничего не происходит.

Чего мне не хватает?

Ответы [ 2 ]

5 голосов
/ 16 января 2010

Разве ваш стиль ButtonHeader не должен переопределять свойство minHeight? Похоже, что в итоге вы получаете minHeight = 60dp и maxHeight = 10dp, и minHeight выигрывает. Если вы явно задали minHeight что-то еще, у вас не должно быть этой проблемы.

0 голосов
/ 11 января 2010

так как я недооцениваю, у вас есть 2 различных стиля для кнопки (Button - HeaderButton) и в стилях HeaderButton вы устанавливаете minHieght и MaxHeight (максимальная высота работает), а теперь MinHeight лицо с проблемой,

Я реализую ваш код и обнаружил, что ваш MinHeight не подходит для 18-дюймового текста, поэтому вам следует либо уменьшить размер вашего текста, либо увеличить размер minheight

дай мне знать, что с тобой происходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...