您的位置:首页 > 移动开发 > Android开发

Android:自定义组合控件

2017-05-24 21:07 260 查看
在Android程序开发中,控件是常用的东西,但有时候会发现现有的控件无法满足功能需求,所以就需要有自定义控件。

自定义控件一般有两种方式,一种是组合控件,一种是基于View类的自绘控件。组合控件顾名思义就是将现有的控件组合到一起,形成一个新控件。相比自绘控件,组合控件比较容易编写,但是还是受限于现有的控件,可以满足一些个性不是很强的控件需求。

现在我们就来讲讲组合控件:

什么是组合控件

个人理解所谓的组合控件就是把,现有的控件放一起,把几个控件的功能结合在一起,并且相互作用。

什么时候使用组合控件

个人认为,在某些控件组合会多次使用的时候可以把这些控件的组合编写成一个组合控件,可以提高编程的效率。

例如,一些购物app的商品简介界面的商品信息的显示,一般会有ImageView,TextView,Button等基本控件。这些控件组合会重复的出现,所以就可以把这些控件组合成组合控件,以便高效的重复利用。

实现组合控件

这里简单实现一个带增加减少按钮的数字编辑框

首先编辑布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:layout_width="30dp"
android:layout_height="50dp"
android:id="@+id/minus"
android:src="@drawable/pull_left"
android:background="#00000000"/>
<EditText
android:layout_width="75dp"
android:layout_height="50dp"
android:id="@+id/num"
android:text="0"
android:gravity="center"
android:inputType="number"
android:textSize="16sp"/>
<ImageButton
android:layout_width="30dp"
android:layout_height="50dp"
android:id="@+id/add"
android:src="@drawable/pull_right"
android:background="#00000000"
/>
</LinearLayout>


在布局文中,我添加了2个ImageButton和一个EditText,按钮用来增加或减少编辑框中数字的大小,编辑框用来显示数字或者直接修改数字

效果图



接下来创建一个NumberView类继承FrameLayout类

public class NumberView extends FrameLayout {
private ImageButton minus;
private ImageButton add;
private EditText num;

public NumView(Context context){
super(context);
minus=(ImageButton) findViewById(R.id.minus);
add=(ImageButton) findViewById(R.id.add);
num=(EditText)findViewById(R.id.num);
minus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int n;
n=Integer.parseInt(num.getText().toString());
n--;
num.setText(n+"");
}
});
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int n;
n=Integer.parseInt(num.getText().toString());
n++;
num.setText(n+"");
}
});
}
public int getnum(){
return Integer.parseInt(num.getText().toString());
}
public void setnum(int a){ this.num.setText(a+"");}
public TextView getnumtext(){
return num;
}
}


在Java代码中进行对布局文件的绑定,并绑定控件,对控件进行设置或者绑定监听器等操作。

定义好组合控件后,接下来需要进行对其的引用

在资源文件可以直接想普通控件一样,进行引用

<com.example.administrator.helper.NumView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:id="@+id/cnum">


输入完整的类明既可以引用

在Java代码中也和普通的控件一样进行操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: