[英]How can i change android actionbar picture
我是android上的新手,我正在使用android studio进行开发。 我想将actionbar右上角的按钮图像更改为另一图像,但是在编译到我的android设备后,该按钮仍保留为...,但是我的自定义图像。 请帮忙!! 下面是我的代码。 我的公开课是扩展活动。
menu.xml
android:id="@+id/action_share"
android:orderInCategory="100"
android:title="Share"
android:icon="@drawable/ic_search_black"
app:showAsAction="ifRoom"
Vic3ai,该图标一直位于右侧,是Action Overflow ,它始终会显示一个下拉菜单,这些下拉菜单不适用于操作栏(因为没有空间或因为我们决定在其中放一些)故意溢出)。
这可以使您更好地了解溢出的含义和用途,以及操作栏的概述-http: //developer.android.com/design/patterns/actionbar.html 。
听起来您实际上想要在操作栏上添加一个操作按钮 。 您可以这样做:
首先,在menu.xml中添加一个新项目,您希望其出现在该项目中:
<item
android:id="@+id/camera_button"
android:title="@string/camera"
android:icon="@drawable/camera_icon"
android:orderInCategory="100"
android:showAsAction="always"
/>
这里重要的是android:showAsAction =“ always”。 这就是使其在操作栏上显示为操作按钮的原因。 您还可以使用值“ ifRoom”,其值与锡盒上的含义相同:如果操作栏上有空间,则按钮将显示,否则将进入操作溢出。
现在我们已经有了actionbutton,我们进入actvity.java并响应该按钮:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.camera_button:
//your code here, eg:
openCamera();
return true;
// if you have other buttons, more cases would go here
}
return super.onOptionsItemSelected(item);
}
到目前为止,这应该在动作栏上为您提供一个“动作”按钮,该按钮可以运行您在activity.java中定义的任何内容,但动作溢出仍将存在。 删除它的最简单方法是返回menu.xml并删除/更改将在溢出中出现的所有项目。
android:showAsAction="never"
会自动将动作置于溢出状态
如果您有很多操作按钮,而其中任何一个都有android:showAsAction =“ ifRoom” ,则可能会在最右边再次找到一个溢出按钮
注意,如果您使用的是appCompat兼容性,请使用app:showAsAction =“ always”而不是android名称空间。
希望这可以帮助!
要更改“动作溢出”图标-默认为三个垂直点-您必须在主主题声明中添加一个actionOverflowButtonStyle项,然后在styles.xml中对其进行定义:
<resources>
<!-- base application theme -->
<style
name="AppTheme" parent="@android:style/Theme.Holo">
<!-- include overflow style in theme -->
<item name="android:actionOverflowButtonStyle">@style/OverFlowIcon</item>
</style>
<!-- styles -->
<style
name="OverFlowIcon"
parent="@android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/ic_search_black</item>
</style>
</resources>
当然,如果您使用的是AppCompat主题,请不要忘记使用没有 android名称空间的属性,否则它将无法正常工作-即
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
而不是上面看到的。
另外,如果您更改了自定义主题,也不要忘记将主题包含在AndroidManifest.xml的应用程序标记中:
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.