Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 742|回复: 0

Android 自定义控件(一) - Android学习

[复制链接]

该用户从未签到

发表于 2011-10-26 19:21:38 | 显示全部楼层 |阅读模式
       今天和大家分享下组合控件的使用。很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便的一个方法。今天就来介绍下如何使用组合控件,将通过两个实例来介绍。

java代码:
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

androidrientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/iv"

android:src="@drawable/confirm"

android:paddingTop="5dip"

android:paddingBottom="5dip"

android:paddingLeft="40dip"

android:layout_gravity="center_vertical"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="确定"

android:textColor="#000000"

android:id="@+id/tv"

android:layout_marginLeft="8dip"

android:layout_gravity="center_vertical"

/>

</LinearLayout>
复制代码
       这个xml实现一个左图右字的布局,接下来写一个类继承LinearLayout,导入刚刚的布局,并且设置需要的方法,从而使的能在代码中控制这个自定义控件内容的显示。代码如下:

java代码:
import android.content.Context;

04.import android.util.AttributeSet;

05.import android.view.LayoutInflater;

06.import android.widget.ImageView;

07.import android.widget.LinearLayout;

08.import android.widget.TextView;

09.

10.public class ImageBt extends LinearLayout {

11.

12. private ImageView iv;

13. private TextView tv;

14.

15. public ImageBt(Context context) {

16. this(context, null);

17. }

18.

19. public ImageBt(Context context, AttributeSet attrs) {

20. super(context, attrs);

21. // 导入布局

22. LayoutInflater.from(context).inflate(R.layout.custombt, this, true);

23. iv = (ImageView) findViewById(R.id.iv);

24. tv = (TextView) findViewById(R.id.tv);

25.

26. }

27.

28. /**

29. * 设置图片资源

30. */

31. public void setImageResource(int resId) {

32. iv.setImageResource(resId);

33. }

34.

35. /**

36. * 设置显示的文字

37. */

38. public void setTextViewText(String text) {

39. tv.setText(text);

40. }

41.

42.}
复制代码
       第三步,在需要使用这个自定义控件的layout中加入这控件,只需要在xml中加入即可。方法如下:

java代码:
01.<RelativeLayout

02. android:orientation="horizontal"

03. android:layout_width="fill_parent"

04. android:layout_height="wrap_content"

05. android:layout_gravity="bottom"

06. >

07. <com.notice.ib.ImageBt

08. android:id="@+id/bt_confirm"

09. android:layout_height="wrap_content"

10. android:layout_width="wrap_content"

11. android:layout_alignParentBottom="true"

12. android:background="@drawable/btbg"

13. android:clickable="true"

14. android:focusable="true"

15. />

16. <com.notice.ib.ImageBt

17. android:id="@+id/bt_cancel"

18. android:layout_toRightOf="@id/bt_confirm"

19. android:layout_height="wrap_content"

20. android:layout_width="wrap_content"

21. android:layout_alignParentBottom="true"

22. android:background="@drawable/btbg"

23. android:clickable="true"

24. android:focusable="true"

25. />

26. </RelativeLayout>
复制代码
       注意的是,控件标签使用完整的类名即可。为了给按钮一个点击效果,你需要给他一个selector背景,这里就不说了。

       最后一步,即在activity中设置该控件的内容。当然,在xml中也可以设置,但是只能设置一个,当我们需要两次使用这样的控件,并且显示内容不同时就不行了。在activity中设置也非常简单,我们在ImageBt这个类中已经写好了相应的方法,简单调用即可。代码如下:

java代码:
01.public class MainActivity extends Activity {

02.

03. private ImageBt ib1;

04. private ImageBt ib2;

05.

06. /** Called when the activity is first created. */

07. @Override

08. public void onCreate(Bundle savedInstanceState) {

09. super.onCreate(savedInstanceState);

10. setContentView(R.layout.login);

11.

12. ib1 = (ImageBt) findViewById(R.id.bt_confirm);

13. ib2 = (ImageBt) findViewById(R.id.bt_cancel);

14.

15. ib1.setTextViewText("确定");

16. ib1.setImageResource(R.drawable.confirm);

17. ib2.setTextViewText("取消");

18. ib2.setImageResource(R.drawable.cancel);

19.

20. ib1.setOnClickListener(new OnClickListener() {

21.

22. @Override

23. public void onClick(View v) {

24. //在这里可以实现点击事件

25. }

26. });

27.

28. }

29.}
复制代码
系列之Android 自定义控件(二)的帖子链接http://www.eoeandroid.com/thread-102393-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 20:55 , Processed in 0.326603 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表