设计一个自定义组合控件。它的功能,通过两个按钮分别增加、减小EditText里面的数字。效果图如下:
实现代码:
/************** /src/com.lxy/AppMain.java ***************/
package com.lxy;
import android.app.Activity;
import android.os.Bundle;
public class AppMain extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
/************** /src/com.lxy/MyEditText.java **************/
package com.lxy;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class MyEditText extends LinearLayout{
private EditText mEditText;
private Button bAdd;
private Button bReduce;
//这里的构造一定是两个参数。
public MyEditText(final Context ctxt, AttributeSet attrs) {
super(ctxt,attrs);
}
protected void onFinishInflate() {
super.onFinishInflate();
LayoutInflater.from(getContext()).inflate(R.layout.myedittext, this);
init_widget();
addListener();
}
public void init_widget(){
mEditText = (EditText)findViewById(R.id.et01);
bAdd = (Button)findViewById(R.id.bt01);
bReduce = (Button)findViewById(R.id.bt02);
mEditText.setText("1");
}
public void addListener(){
bAdd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
int num = Integer.valueOf(mEditText.getText().toString());
num++;
mEditText.setText(Integer.toString(num));
}
});
bReduce.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int num = Integer.valueOf(mEditText.getText().toString());
num--;
mEditText.setText(Integer.toString(num));
}
});
}
}
/************ /res/layout/main.xml *************/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textSize="30dip" android:text="数字通过按键可以加减: "></TextView>
<com.lxy.MyEditText
android:id="@+id/meter"
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
/********** /res/layout/myedittext.xml ***********/
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/et01"
android:layout_width="150dip" android:layout_height="40dip"
android:layout_x="0dip" android:layout_y="0dip"
android:textColor="#000000" android:textSize="30dip"
android:background="#FFFFFF" android:textScaleX="1.5"
android:numeric="integer"></EditText>
<Button android:id="@+id/bt01"
android:layout_height="18dip" android:layout_width="30dip"
android:layout_x="120dip" android:layout_y="0dip"
android:scaleType="fitCenter" android:background="@drawable/up"
/>
<Button android:id="@+id/bt02"
android:layout_height="18dip" android:layout_width="30dip"
android:layout_x="120dip" android:layout_y="22dip"
android:scaleType="fitCenter" android:background="@drawable/down"
/>
</AbsoluteLayout>