android 自定义控件实例
来源:互联网 发布:java小游戏开发 编辑:程序博客网 时间:2024/05/18 00:56
很多时候android常用的控件不能满足我们的需求,那么我们就需要自定义一个控件了。今天做了一个自定义控件的实例,来分享下。
首先定义一个layout实现按钮内部布局:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:orientation
=
"horizontal"
>
<
ImageView
android:id
=
"@+id/imageView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_gravity
=
"center_vertical"
android:paddingBottom
=
"5dip"
android:paddingLeft
=
"40dip"
android:paddingTop
=
"5dip"
android:src
=
"@drawable/right_icon"
/>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_gravity
=
"center_vertical"
android:layout_marginLeft
=
"8dip"
android:text
=
"确定"
android:textColor
=
"#000000"
/>
</
LinearLayout
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public
class
ImageBtn
extends
LinearLayout {
private
ImageView imageView;
private
TextView textView;
public
ImageBtn(Context context) {
super
(context);
// TODO Auto-generated constructor stub
}
public
ImageBtn(Context context, AttributeSet attrs) {
super
(context, attrs);
// TODO Auto-generated constructor stub
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.imagebtn,
this
);
imageView=(ImageView) findViewById(R.id.imageView1);
textView=(TextView)findViewById(R.id.textView1);
}
/**
* 设置图片资源
*/
public
void
setImageResource(
int
resId) {
imageView.setImageResource(resId);
}
/**
* 设置显示的文字
*/
public
void
setTextViewText(String text) {
textView.setText(text);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:orientation
=
"horizontal"
>
<
cn.com.karl.view.ImageBtn
android:id
=
"@+id/btn_right"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:background
=
"@drawable/btn"
/>
<
cn.com.karl.view.ImageBtn
android:id
=
"@+id/btn_error"
android:layout_marginLeft
=
"5dp"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:background
=
"@drawable/btn"
/>
</
LinearLayout
>
1
2
3
4
5
6
7
8
9
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:state_focused
=
"true"
android:state_pressed
=
"false"
android:drawable
=
"@drawable/btn_normal"
></
item
>
<
item
android:state_pressed
=
"true"
android:drawable
=
"@drawable/btn_white"
></
item
>
<
item
android:state_checked
=
"true"
android:drawable
=
"@drawable/btn_white"
></
item
>
<
item
android:state_focused
=
"false"
android:state_pressed
=
"false"
android:drawable
=
"@drawable/btn_normal"
></
item
>
</
selector
>
最后在activity中设置该控件,和其他控件差不多:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public
class
IdentifyButtonActivity
extends
Activity {
private
ImageBtn imageBtn1;
private
ImageBtn imageBtn2;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super
.onCreate(savedInstanceState);
setContentView(R.layout.identifybutton);
imageBtn1=(ImageBtn)
this
.findViewById(R.id.btn_right);
imageBtn2=(ImageBtn)
this
.findViewById(R.id.btn_error);
imageBtn1.setTextViewText(
"确定"
);
imageBtn2.setTextViewText(
"取消"
);
imageBtn1.setImageResource(R.drawable.right_icon);
imageBtn2.setImageResource(R.drawable.error_icon);
imageBtn1.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"点击的正确按钮"
,
1
).show();
}
});
imageBtn2.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"点击的错误按钮"
,
1
).show();
}
});
}
}
点击后还有按下按钮的效果。
0 0
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android 自定义控件实例
- android自定义控件实例
- android自定义控件实例
- android自定义控件实例 --控件
- android 自定义控件方法以及实例
- Android自定义控件下拉刷新实例代码
- android自定义控件实例(一) 上下滑屏控件
- Winform自定义控件实例
- Winform自定义控件实例
- Winform自定义控件实例
- UI抽屉菜单DrawerLayout(三)(测拉菜单)
- POJ 1804 Brainman && zzulioj 1470: Car race game(归并排序)
- io流 File类
- 设计模式之工厂模式
- Excel中反转一列数据的几种方法
- android 自定义控件实例
- LeetCode Rotate Image
- 冒泡排序
- 三层之上
- HBase二级索引与Join
- [JAVA]对象与引用、static、反射
- c++的类型转换
- STL 标准模板库 中栈stack 容器的使用
- 学习第一天