各位看官们,大家好,上一回中咱们说的是Android中使用自定义布局的例子,这一回说的例子是Android中使用自定义控件。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在上一回中通过自定义布局巧妙地实现了分隔线,不过这个分隔线中看不中用?简直就是个花瓶。为什么这么说呢?因为它只能显示一个分隔线,没有任何事件处理能力。接下来我们将介绍如何给自定义的布局添加事件处理能力,这也是本章回的主要内容:自定义控件。
-
1.新建一个类:DIYDivider,它继承自LinearLayout,代码如下:
public class DIYDivider extends LinearLayout {
// 类中的内容先省略
} -
2.重写该类的构造函数:
public DIYDivider(Context context, AttributeSet attrs)
{
super(context, attrs);
} -
3.在该类的构造函数中把自己定义的布局加载进来:
LayoutInflater.from(context).inflate(R.layout.line,this);
//这里的line布局是上一章回中自定义的布局
-
4.在构造函数中为控件添加事件处理,我们添加的是Touch事件:
mTextView.setOnTouchListener();
为了看官们看的清楚些,下面是完成的代码:
public class DIYDivider extends LinearLayout { //步骤1
private TextView mTextView = null;
public DIYDivider(Context context, AttributeSet attrs) { //步骤2
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.line,this); //步骤3
mTextView = (TextView)findViewById(R.id.id_line); //步骤4
mTextView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mTextView.setBackgroundColor(getResources().getColor(R.color.colorBlue));
return false;
}
});
}
}
自定义控件到此就完成了,我们只需要在主Activity的布局中添加它就可以,添加方法如下:
<com.example.talk8.blogapp003.DIYDivider
android:layout_width=“match_parent”
android:layout_height=“wrap_content”>
</com.example.talk8.blogapp003.DIYDivider>
同时把<include layout="@layout/line"></include>
删除掉,这是自定义布局的时候才使用。
看官们,我们是在上一回内容的基础上进行的,因此直接使用了上一回中自定义的布局。而且主Activity也没有变。在代码中我们为分隔线添加Touch事件,当触摸分隔线的时候它的颜色会从绿色变成蓝色。大家可以自己试试,我们就不展示了。
各位看官,关于Android中使用自定义控件的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!