在Android操作栏中添加按钮

6

如何在操作栏中制作带有文本和图像的按钮,如下所示。

是否可以使用内置的Android按钮或图像按钮来在操作栏中实现以下效果。

我正在使用appcompat来使用操作栏。

enter image description here


26
请考虑在 Android 应用程序中不使用 iOS 风格的按钮,因为用户通常不喜欢它。 - Kuffs
2个回答

12

是的,如果需要,您可以膨胀一个自定义的ActionBar。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LayoutInflater inflater = (LayoutInflater) getActionBar()
            .getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    View customActionBarView = inflater.inflate(R.layout.actionbar_custom, null);

    ActionBar actionBar = getActionBar();
    actionBar.setDisplayOptions(
            ActionBar.DISPLAY_SHOW_CUSTOM,
            ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME
                    | ActionBar.DISPLAY_SHOW_TITLE);
    actionBar.setCustomView(customActionBarView,
            new ActionBar.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT));

    setContentView(R.layout.activity_main);
}

其中actionbar_custom.xml将是您的布局资源,通常是一个LinearLayout,包含您需要的任何组件。


在AndroidManifest中是否可以应用自定义ActionBar? - saravanan
1
不,你不能从清单中向操作栏添加项目。您可以使用主题来配置displayOptions,但必须以编程方式填充视图并将其放入操作栏中。如果要将自定义操作栏应用于多个不同的活动,请将所需代码添加到基本活动的onCreate方法中,并使其他活动扩展它。 - ivagarz
你尝试在调用Activity的setContentView之前配置ActionBar了吗? - ivagarz
不需要。我只是像这样设置主题。android:theme="@style/Theme.AppCompat.Light" - saravanan
在调用setContentView之前,活动不会显示出来,因此您应该尝试对UI进行任何更新,例如将操作栏替换为自定义视图。我已经更新了上面的示例。 - ivagarz
显示剩余3条评论

3

除了默认的图标集之外,我如何制作一个类似上面的自定义操作项? - saravanan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接