现在的位置: 首页 > 综合 > 正文

Android简单自定义控件做法

2014年01月08日 ⁄ 综合 ⁄ 共 3087字 ⁄ 字号 评论关闭

 很多时候android常用的控件不能满足我们的需求,那么我们就需要自定义一个控件了。今天做了一个自定义控件的实例,来分享下。

              首先定义一个layout实现按钮内部布局:

      

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="horizontal" >  
  6.   
  7.     <ImageView  
  8.         android:id="@+id/imageView1"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_gravity="center_vertical"  
  12.         android:paddingBottom="5dip"  
  13.         android:paddingLeft="40dip"  
  14.         android:paddingTop="5dip"  
  15.         android:src="@drawable/right_icon" />  
  16.   
  17.     <TextView  
  18.         android:id="@+id/textView1"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_gravity="center_vertical"  
  22.         android:layout_marginLeft="8dip"  
  23.         android:text="确定"  
  24.         android:textColor="#000000" />  
  25.   
  26. </LinearLayout>  


        接下来写一个类继承LinearLayout,导入刚刚的布局,并且设置需要的方法,从而使的能在代码中控制这个自定义控件内容的显示。

     

[html] view
plain
copy

  1. public class ImageBtn extends LinearLayout {  
  2.   
  3.     private ImageView imageView;  
  4.     private TextView  textView;  
  5.       
  6.     public ImageBtn(Context context) {  
  7.         super(context);  
  8.         // TODO Auto-generated constructor stub  
  9.     }  
  10.     public ImageBtn(Context context, AttributeSet attrs) {  
  11.         super(context, attrs);  
  12.         // TODO Auto-generated constructor stub  
  13.         LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  14.         inflater.inflate(R.layout.imagebtn, this);  
  15.         imageView=(ImageView) findViewById(R.id.imageView1);  
  16.         textView=(TextView)findViewById(R.id.textView1);  
  17.     }  
  18.       
  19.     /**   
  20.      * 设置图片资源   
  21.      */    
  22.     public void setImageResource(int resId) {    
  23.         imageView.setImageResource(resId);    
  24.     }    
  25.     
  26.     /**   
  27.      * 设置显示的文字   
  28.      */    
  29.     public void setTextViewText(String text) {    
  30.         textView.setText(text);    
  31.     }    
  32.   
  33. }  


     在需要使用这个自定义控件的layout中加入这控件,只需要在xml中加入即可。

  

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="horizontal" >  
  6.   
  7.     <cn.com.karl.view.ImageBtn  
  8.         android:id="@+id/btn_right"  
  9.         android:layout_height="wrap_content"    
  10.         android:layout_width="wrap_content"  
  11.         android:background="@drawable/btn"    
  12.         />  
  13.   
  14.     <cn.com.karl.view.ImageBtn  
  15.         android:id="@+id/btn_error"  
  16.         android:layout_marginLeft="5dp"  
  17.         android:layout_height="wrap_content"    
  18.         android:layout_width="wrap_content"  
  19.         android:background="@drawable/btn"    
  20.         />  
  21.   
  22. </LinearLayout>  


        这里用到了背景图片 在drawable/btn.xml

   

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item android:stat

抱歉!评论已关闭.