文章来源于Open经验库!

>>>>>>>>>>>>>>>>>>>

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

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

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"><ImageViewandroid: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"/><TextViewandroid: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>

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

publicclassImageBtnextendsLinearLayout{privateImageViewimageView;privateTextViewtextView;publicImageBtn(Contextcontext){super(context);//TODOAuto-generatedconstructorstub}publicImageBtn(Contextcontext,AttributeSetattrs){super(context,attrs);//TODOAuto-generatedconstructorstubLayoutInflaterinflater=(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);}/***设置图片资源*/publicvoidsetImageResource(intresId){imageView.setImageResource(resId);}/***设置显示的文字*/publicvoidsetTextViewText(Stringtext){textView.setText(text);}}

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

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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.ImageBtnandroid:id="@+id/btn_right"android:layout_height="wrap_content"android:layout_width="wrap_content"android:background="@drawable/btn"/><cn.com.karl.view.ImageBtnandroid:id="@+id/btn_error"android:layout_marginLeft="5dp"android:layout_height="wrap_content"android:layout_width="wrap_content"android:background="@drawable/btn"/></LinearLayout>

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

<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_focused="true"android:state_pressed="false"android:drawable="@drawable/btn_normal"></item><itemandroid:state_pressed="true"android:drawable="@drawable/btn_white"></item><itemandroid:state_checked="true"android:drawable="@drawable/btn_white"></item><itemandroid:state_focused="false"android:state_pressed="false"android:drawable="@drawable/btn_normal"></item></selector>

最后在activity中设置该控件,和其他控件差不多:

publicclassIdentifyButtonActivityextendsActivity{privateImageBtnimageBtn1;privateImageBtnimageBtn2;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.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(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubToast.makeText(getApplicationContext(),"点击的正确按钮",1).show();}});imageBtn2.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubToast.makeText(getApplicationContext(),"点击的错误按钮",1).show();}});}}

最后看看我们自定义控件的效果吧!


点击后还有按下按钮的效果。


更多相关文章

  1. Android(安卓)运行时给动态加载的图标按钮添加点击效果
  2. android之网格布局和线性布局实现注册页面
  3. android点击空白处或者其他控件的时候隐藏软键盘
  4. 【Android(安卓)界面效果25】android中include标签的使用
  5. Android的布局管理器(上篇)-LinearLayout、TableLayout、FrameLayo
  6. Android性能优化-布局优化
  7. Android(安卓)初级面试者拾遗(前台界面篇)之 View 和 ViewGroup
  8. Android(安卓)SQlite数据库的使用(一)-一学就会android数据库
  9. Android(安卓)Studio 介绍

随机推荐

  1. Android入门第九篇之AlertDialog
  2. windows 下 Android(安卓)NDK开发配置(win
  3. Android横屏竖屏切换的问题
  4. android SQLite数据库总结
  5. Android(安卓)requires compiler complia
  6. 2010.12.28(4)——— android tab 过多的
  7. Android(安卓)DVM
  8. android UI 优化系列之 创建RGB565的缓存
  9. Android(安卓)Notes(06) - Touch事件分发
  10. android studio logcat 打印不出信息