Android: панель действий для телефонов

#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, и это тоже не оформлено.