#android #material-design
#Android #материал-дизайн
Вопрос:
У меня есть панель поиска в макете для пользовательских настроек диалогового окна. Я изменил свой styles.xml чтобы использовать новый дизайн материала. Это работает, потому что он изменяет текст и флажки в моих настройках, но я не могу применить цвет к своей панели поиска. Это работает, только если я помещаю панель поиска в действие, это означает, что я должен что-то сделать в своем пользовательском макете, но я не знаю, что. Я публикую styles.xml и макет с панелью поиска:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="android:Theme.Material">
<!-- Main theme colors -->
<!-- your app's branding color (for the app bar) -->
<item name="android:colorPrimary">#FFFF4444</item>
<!-- darker variant of colorPrimary (for status bar, contextual app bars) -->
<item name="android:colorPrimaryDark">#FFCC0000</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">#FFFF00</item>
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
</style>
</resources>
настраиваемый макет для настройки диалогового окна:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<SeekBar
android:id="@ id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dip"
android:theme="@android:style/Theme.Material"
android:layout_marginTop="6dip" />
</LinearLayout>
Ответ №1:
С Lollipop это больше не нужно вообще. Цвета хорошо применяются даже в диалоговых окнах пользовательских настроек ~ greywolf82
Я хочу поделиться несколькими пользовательскими библиотеками
Вы можете использовать эту библиотеку Material Design, она также включает в себя множество других виджетов.
или
Настраиваемая панель поиска Lib DiscreteSeekBar
Комментарии:
1. С Lollipop это больше не нужно вообще. Цвета хорошо применяются даже в диалоговых окнах пользовательских настроек.
2. @greywolf82 вы имеете в виду, что новая библиотека Appcompat будет это делать? глядя на поддержку до 2.3?
3. Да, даже если поддержка Appcompat ограничена, но с lollipop работает как шарм.
Ответ №2:
Вам не нужно указывать атрибут android: theme в элементе панели поиска. Вместо этого вам следует настроить темы диалогового окна по умолчанию и диалогового окна оповещений в вашей AppBaseTheme:
<style name="AppBaseTheme" parent="android:Theme.Material">
...
<item name="android:dialogTheme">@style/AppDialogTheme</item>
<item name="android:alertDialogTheme">@style/AppAlertTheme</item>
</style>
<style name="AppDialogTheme" parent="android:Theme.Material.Dialog">
<item name="android:colorPrimary">#FFFF4444</item>
<item name="android:colorPrimaryDark">#FFCC0000</item>
<item name="android:colorAccent">#FFFF00</item>
</style>
<!-- This should extend Theme.Material.Dialog.Alert, but that style was
incorrectly hidden in L-preview. It will be fixed in a future release.
You can approximate the style using the last two MinWidth attributes.-->
<style name="AppAlertTheme" parent="android:Theme.Material.Dialog">
<item name="android:colorPrimary">#FFFF4444</item>
<item name="android:colorPrimaryDark">#FFCC0000</item>
<item name="android:colorAccent">#FFFF00</item>
<item name="android:windowMinWidthMajor">65%</item>
<item name="android:windowMinWidthMinor">95%</item>
</style>
Комментарии:
1. вы знаете, возможно ли что-то подобное даже для holo? colorAccent — это материальный элемент, я ничего не могу найти для holo. Спасибо.
2. Вы можете сделать это программно, установив PorterDuffColorFilter в drawable (см. Drawable.setColorFilter ), но не из XML.
3. Просто попробовал ваше решение, но оно вообще не работает. Материал. Диалоговое окно. Предупреждение не существует. И во всех диалогах с моей панелью поиска по-прежнему используется синяя голограмма. Я думаю, что проблема заключается в предпочтении диалога, он использует конструктор AlertDialog по умолчанию без указания темы, в данном конкретном случае переопределение вообще не работает.
4. Извините, вы совершенно правы, это ошибка в настройках диалогового окна. Это было исправлено внутри, но сломано в выпуске lmp-preview. То же самое с темой диалогового окна оповещения, являющейся общедоступной.
5. Можете ли вы поделиться ссылкой, чтобы увидеть внутреннее исправление? Просто любопытно 🙂