基本上我想从我已经拥有的代码中封装一个简单的组件。
基本上它是一个带有按钮的LinearLayout
。这些按钮会对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);
我希望视图调整显示按钮的权重,向用户显示哪个过滤器处于活动状态,这样的东西。
但我仍然不知道如何使这些动态添加的按钮出现,我在哪里生成它们,如何给它们充气等等。
答案 0 :(得分: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);
}
//...
}