基本上,我想用已有的代码封装一个简单的组件。
基本上,它是一个内部有按钮的LinearLayout。这些按钮将对ListView进行更改,它还将执行其他一些小操作。
目前,我有一个XML布局,并且我通过编程设置了所有其他东西:按钮、列表和其他小东西之间的交互。
显然,我对自己说,让我们把它封装起来吧。
我开始尝试扩展LinearLayout并添加按钮。我已经不知道如何扩展按钮以添加到视图中,我应该重写什么方法才能在创建视图之前创建此按钮,而不会干扰度量和膨胀等。
我已经环顾四周,但我看到的定制组件要么是全新的组件,要么只是在定制组件的基础上添加了一些小功能。
做这件事有什么指导原则吗?好的教程/例子?
任何帮助都是非常感谢的。谢谢!
编辑:
好的,这里有一些更具体的东西。
基本上,我想创建一个包含ListView的筛选器按钮的View。这将用于不同的地方与不同的过滤器,所以我需要灵活的按钮。
基本上,我想做这样的事情:
CustomView view = new CustomView(activity);
view.addButton("Lala", new OnFilterClickListener {
onClick(ListView list, View v) {
// Do the filtering
}
});
mListView.addHeaderView(view);我想让视图调整它的权重来显示按钮,向用户显示哪个过滤器是活动的,诸如此类。
但我仍然不知道如何让这些动态添加的按钮出现,我在哪里生成它们,如何膨胀它们,诸如此类的东西。
发布于 2011-10-19 21:25:08
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);
}
//...
}https://stackoverflow.com/questions/7821526
复制相似问题