0

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

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

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

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

谢谢

4

1 回答 1

0

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

您可以动态设置按钮,也可以通过传递自定义属性在 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属性所做的事情。它使用反射来调用提供的父方法。关于那个源代码的信息。也许您可以重用已经实现的内容或从 Android 复制和改编。

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

于 2013-06-28T00:50:59.217 回答