Android:手机操作栏
我试图从 Google I/O 2011 应用中提取操作栏,但我似乎无法弄清楚他们如何设置栏上的标题和按钮。基本上我无法弄清楚
是如何工作的。
声明了这一点
<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>
所以在 attr.xml
中,他们在 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
的作用是什么?代码> 做什么?
I was trying to extract the action bar from the Google I/O 2011 app, but I cannot seem to figure out how they set the title and buttons on the bar. Basically I couldn't figure out how the <declare-stylable>
worked.
So in the attr.xml
, they have declared this
<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>
In 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>
And I guess I should be using this code to add the logo to the bar,
ImageButton logo = new ImageButton(mActivity, null, R.attr.actionbarLogoStyle);
logo.setOnClickListener(homeClickListener);
actionBarCompat.addView(logo);
But nothing happens. I know I have missed out something while copy/pasting :D but I cannot figure out what!..
Also what is the use of declare-stylable
an what does the format=reference
do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,您可能想要使用已经是可重用组件的东西。
自定义视图使用它来声明您可以在布局中提供的自定义属性。
这表明自定义属性采用对资源的引用作为值。在这种情况下,它似乎是对样式资源的引用。
First, you might want to use something that is already a reusable component.
That is used by custom Views to declare custom attributes that you can supply in your layouts.
That indicates that the custom attribute takes, as a value, a reference to a resource. In this case, it would appear to be references to style resources.