Я пытался извлечь панель действий из приложения 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
?
Во-первых, вы можете использовать то, что уже является компонентом многократного использования.
что используется declare- stylable
Это используется пользовательскими представлениями для объявления пользовательских атрибутов, которые вы можете предоставить в своих макетах.
что делает format=reference do
Это означает, что пользовательский атрибут принимает в качестве значения ссылку на ресурс. В этом случае это будет ссылка на ресурсы стиля.