app:showAsAction vs android:showAsAction

2019-01-24 02:25发布

I am building an Android app and want to have a button always visible on the actionBar. I followed this guide and others, but none of them seem to solve my problem (although they are very close I guess...).

I have the package "app" and use app:showAsAction="always". No error is shown, but no button on the bar as well. When I change it to android:showAsAction="always" the button appears on the bar, but AndroidStudio tells me I should go for "app:showAsAction with appCompat...".

I have a custom theme with parent="@android:style/Theme.Holo.Light.DarkActionBar"> and for the bar itself: parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">.

Should I change something and get app:showAsAction working, or ignore AndroidStudio error message and go for android:showAsAction?

1条回答
别忘想泡老子
2楼-- · 2019-01-24 02:54

This is the documentation of the lint rule:

AppCompatResource

Summary: Menu namespace

Priority: 5 / 10

Severity: Error

Category: Usability

When using the appcompat library, menu resources should refer to the showAsAction in the app: namespace, not the android: namespace.

Similarly, when not using the appcompat library, you should be using the android:showAsAction attribute.

I think the problem is that you are mixing Framework Activity and AppCompat menu.

You should use AppCompatActivity with AppCompat Action bar and app:showAsAction; or Activity with android:showAsAction.

查看更多
登录 后发表回答