0

基本上我想从我已经拥有的代码中封装一个简单的组件。

基本上它是一个LinearLayout带有按钮的内部。这些按钮将对 a 进行更改ListView,并且还会执行一些其他小操作。

目前我有一个 XML 布局,我以编程方式设置其他所有内容:按钮、列表和其他小东西之间的交互。

显然,我心想,让我们封装一下。

我开始尝试扩展LinearLayout并添加按钮。我已经不知道如何膨胀按钮以添加到视图中我在创建视图之前覆盖什么方法来创建此按钮,而不会弄乱度量和膨胀等。

我环顾四周,但我看到的自定义组件要么是全新的组件,要么是仅向自定义组件添加小功能的组件。

有一些指导方针吗?好的教程/例子?

任何帮助表示赞赏。谢谢 !

编辑:

好的,这里有一些更具体的东西。

基本上我想创建一个View包含过滤器按钮的ListView. 这将在不同的地方使用不同的过滤器,所以我需要按钮的灵活性。

基本上我想做这样的事情:

CustomView view = new CustomView(activity);
view.addButton("Lala", new OnFilterClickListener { 
    onClick(ListView list, View v) {
      // Do the filtering
    }
});

mListView.addHeaderView(view);

我希望视图调整其权重以显示按钮,向用户显示哪个过滤器处于活动状态,诸如此类。

但是我仍然不知道如何让那些动态添加的按钮出现,我在哪里生成它们,如何给它们充气等等。

4

1 回答 1

1
public class myLayout extends LinearLayout {

    //...

    public void addButton(String text, OnClickListener listener) {
        Button newButton = new Button(mContext);
        newButton.setText(text);
        newButton.setOnClickListener(listener);
        //Say we want the weights to be equal
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1);
        addView(newButton, params);
    }

    //...

}

您甚至可以在发送点击之前对视图执行一些操作,如下所示:

public class myLayout extends LinearLayout {

    //...

    public void addButton(String text, final OnClickListener listener) {
        Button newButton = new Button(mContext);
        newButton.setText(text);
        newButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                //do whatever you want
                //like change background of button or something
                //finally
                listener.onClick(v);
            }
        });
        //Say we want the weights to be equal
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1);
        addView(newButton, params);
    }

    //...

}
于 2011-10-19T13:25:08.010 回答