【问题标题】:How to build an actionbar for each activity in an Android app?如何为 Android 应用程序中的每个活动构建一个操作栏?
【发布时间】:2013-06-27 23:58:20
【问题描述】:

我有一个 Android 应用,在每个活动中我都有相同的自定义 ActionBar(只是一个 RelativeLayout),其中包含徽标和一些按钮。

问题在于,对于每个活动,按钮都是不同的,并且与当前活动内的视图交互。

我首先创建了一个自定义视图,我可以将其放入每个活动布局中,但这似乎不是最好的解决方案 - 因为自定义 ActionBar 必须保存与所有视图的所有交互,并且将具有访问布局本身。

解决这个问题的正确方法是什么?创建一个自定义的 Actionbar,它在所有 Activity 上都有一些共同的设计,在每个 Activity 上都有一些不同的功能。

谢谢

【问题讨论】:

  • 我能看到的唯一方法是在每个Activity 的xml 中使用相同的layout,并将其上的按钮更改为您需要的每个按钮。我有一个 ActionBar 的自定义布局,但每个 Activity 几乎相同,每个 BaseActivity 扩展自定义 BaseActivity。当我需要一些不同的功能时,我会overrideBaseActivity中的功能@

标签: android android-activity android-actionbar


【解决方案1】:

按照DRY 指南,我建议为操作栏创建自定义视图。 还可以使其可配置,以便您可以指定在哪个活动中需要多少个按钮。

您可以动态设置按钮,也可以通过passing custom attributes在xml文件中设置按钮。

为了允许按钮与布局上的其余部分交互,您应该在活动中设置点击侦听器:

public class MyActivity extends Activity {

    MyActionBar actionBar;

    public void onCreate(Bundle bundle) {
        actionBar = (MyActionBar) findViewById(R.id.action_bar);
        Button firstButton = actionBar.getButton(1);

        firstButton.setOnClickListener(new OnClickListener(){
            public void onCLick() {
                // interact with main activity
            }
        }
    }
}

如果你是真正的 xml 粉丝,你可以做一些类似于 Android 使用 onClick 属性所做的事情。它使用反射来调用提供的父方法。Info about thatsource code。也许您可以重用已经实现的内容或从 Android 复制和改编。

如果您需要任何帮助,请给我留言。

【讨论】:

  • 谢谢 - 这就是我的想法。希望有更简单的东西:)
  • 它并不像听起来那么糟糕。我必须做类似的事情,而你只需要做一次。
  • 是的,但是这样意味着 ActionBar 将实际保存许多布局的视图。也许......有没有办法继承一个包含基本 UI 的基本 ActionBar 并为每个继承的类添加所需的按钮?
  • 我不确定 ActionBar 应该如何为您定制。但是,如果您只需要更改按钮的数量和一些图标,那么拥有引用应该不是问题(或者您可以动态添加按钮)。如果 Bar 在某些情况下确实必须与我建议的继承不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多