我是Android的新手,我正在使用android studio开发。我想将操作栏右上角按钮图像更改为另一个但在编译到我的Android设备后按钮仍然是...但我的自定义图像。请帮忙!!下面是我的代码。我的公共类是扩展活动。
menu.xml文件
android:id="@+id/action_share"
android:orderInCategory="100"
android:title="Share"
android:icon="@drawable/ic_search_black"
app:showAsAction="ifRoom"
答案 0 :(得分:2)
Vic3ai,右边的图标是动作溢出,它将始终显示不适合操作栏的操作按钮的下拉列表(因为那里不是空间,或者因为我们决定将一些故意放入溢出中。
这可能会让您更好地了解溢出的用途和用途,以及操作栏的一般概述 - 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 =&#34; always&#34;。这就是它在动作栏上显示为动作按钮的原因。您也可以使用值&#39; ifRoom&#39;,它会执行它在锡上所说的内容:如果操作栏上有空格,则会显示该按钮,否则会进入操作溢出。
现在我们有了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);
}
到目前为止,这应该会在操作栏上为您提供一个Action Button,它将运行您在activity.java中定义的任何内容,但 action overflow 仍将存在。删除它的最简单方法是返回menu.xml并删除/更改溢出中出现的任何项目。
android:showAsAction="never"
会自动将操作放入溢出
如果你有很多动作按钮,其中任何一个都有 android:showAsAction =&#34; ifRoom&#34; ,你可能会在最右边找到一个溢出按钮
注意,如果您正在使用appCompat兼容性,请使用 app:showAsAction =&#34; always&#34; 而不是android命名空间。
希望这有帮助!
答案 1 :(得分:1)
更改动作溢出图标 - 默认为三个垂直点 - 您必须将actionOverflowButtonStyle项添加到主题声明 AND ,然后在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>