#android #attributes #styles #android-actionbar
#Android #атрибуты #стили #android-панель действий
Вопрос:
Я пытался извлечь панель действий из приложения Google I / O 2011, но, похоже, я не могу понять, как они устанавливают заголовок и кнопки на панели. В принципе, я не мог понять, как <declare-stylable>
работает.
Итак, в attr.xml
они объявили это
<declare-styleable name="AppTheme">
<attr name="actionbarButtonStyle" format="reference" />
<attr name="actionbarProgressIndicatorStyle" format="reference" />
<attr name="actionbarSeparatorStyle" format="reference" />
<attr name="actionbarLogoStyle" format="reference" />
<attr name="actionbarTextStyle" format="reference" />
<attr name="textHeaderMaxLines" format="integer" />
<attr name="trackAbstractMaxLines" format="integer" />
</declare-styleable>
В styles.xml
,
<style name="ActionBarLogo">
<item name="android:id">@id/actionbar_logo</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:clickable">false</item>
<item name="android:scaleType">center</item>
<item name="android:contentDescription">Logo</item>
<item name="android:src">@drawable/actionbar_logo</item>
</style>
И я предполагаю, что я должен использовать этот код, чтобы добавить логотип на панель,
ImageButton logo = new ImageButton(mActivity, null, R.attr.actionbarLogoStyle);
logo.setOnClickListener(homeClickListener);
actionBarCompat.addView(logo);
Но ничего не происходит. Я знаю, что я что-то пропустил при копировании / вставке: D, но я не могу понять, что !..
Кроме того, какая польза от declare-stylable
того, что format=reference
делает?
Ответ №1:
Во-первых, вы можете захотеть использовать что-то, что уже является компонентом многократного использования.
какая польза от declare-stylable
Используется пользовательскими представлениями для объявления пользовательских атрибутов, которые вы можете указать в своих макетах.
что делает формат = ссылка
Это указывает на то, что пользовательский атрибут принимает в качестве значения ссылку на ресурс. В данном случае это, по-видимому, ссылки на ресурсы стиля.
Комментарии:
1. Спасибо, это сработало безупречно. Но не могли бы вы также, пожалуйста, объяснить, как Google это сделал? Просто любопытно. Я обнаружил, что в их макете панели действий не весь макет предопределен.
2. Привет, ты понял, как они это делают? У меня такая же проблема. Я пробовал это с TextView, и это тоже не оформлено.