Android自定义视图(文本视图和按钮和一些自定义行为)?
这应该很容易做到,但不知何故,经过15分钟的搜索,我仍然无法得到答案: 我想创建一个定制的Android视图,将TextView和按钮结合起来,再加上一些定制的行为/方法,比如说当我点击按钮时,它应该将TextView更改为“Hello,world!” 我知道我必须扩展View类,并在XML中设计布局,然后使用一些魔法将两者链接起来。你能告诉我魔法是什么吗?我知道如何在活动中执行此操作,但不知道如何在自定义视图中执行此操作 编辑 好的,所以我发现我需要使用一个充气器用布局中定义的子视图来充气我的类。以下是我得到的:Android自定义视图(文本视图和按钮和一些自定义行为)?,android,button,view,textview,Android,Button,View,Textview,这应该很容易做到,但不知何故,经过15分钟的搜索,我仍然无法得到答案: 我想创建一个定制的Android视图,将TextView和按钮结合起来,再加上一些定制的行为/方法,比如说当我点击按钮时,它应该将TextView更改为“Hello,world!” 我知道我必须扩展View类,并在XML中设计布局,然后使用一些魔法将两者链接起来。你能告诉我魔法是什么吗?我知道如何在活动中执行此操作,但不知道如何在自定义视图中执行此操作 编辑 好的,所以我发现我需要使用一个充气器用布局中定义的子视图来充气我的
public class MyView extends View {
private TextView text;
private Button button;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
View.inflate(context, R.layout.myview, null);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
text = (TextView) findViewById(R.id.text);
button = (Button) findViewById(R.id.button);
}
}
但是,
文本
和按钮
子视图为空。有什么想法吗?(XML非常简单,没有任何花哨的编辑,我只是从eclipse工具栏抓起一个文本视图和一个按钮并插入。)好的,所以我自己的问题的答案是:(i)去吃晚饭,(ii)扩展线性布局
而不是视图
,这使它成为视图组
,从而可以传递到充气(…)
方法,但不必重写onLayout(…)
方法。更新的代码将是:
public class MyView extends LinearLayout {
private TextView text;
private Button button;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
View.inflate(context, R.layout.myview, this);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
text = (TextView) findViewById(R.id.text);
button = (Button) findViewById(R.id.button);
}
}
我也想要这个功能,但不是很清楚。你能展示R.layout.myview吗?