Android(安卓)自定义button简单示例
16lz
2021-01-24
文章来源于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();}});}}
最后看看我们自定义控件的效果吧!
点击后还有按下按钮的效果。
更多相关文章
- Android(安卓)运行时给动态加载的图标按钮添加点击效果
- android之网格布局和线性布局实现注册页面
- android点击空白处或者其他控件的时候隐藏软键盘
- 【Android(安卓)界面效果25】android中include标签的使用
- Android的布局管理器(上篇)-LinearLayout、TableLayout、FrameLayo
- Android性能优化-布局优化
- Android(安卓)初级面试者拾遗(前台界面篇)之 View 和 ViewGroup
- Android(安卓)SQlite数据库的使用(一)-一学就会android数据库
- Android(安卓)Studio 介绍