我怎样才能改变android actionbar图片

时间:2015-08-07 14:32:26

标签: java android-studio android-actionbar

我是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"

2 个答案:

答案 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>