生活随笔
收集整理的這篇文章主要介紹了
android自定义控件实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很多時候android常用的控件不能滿足我們的需求,那么我們就需要自定義一個控件了。今天做了一個自定義控件的實例,來分享下。
????????????? 首先定義一個layout實現按鈕內部布局:
| 01 | <?xml version="1.0" encoding="utf-8"?> |
| 02 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 03 | ????android:layout_width="fill_parent" |
| 04 | ????android:layout_height="fill_parent" |
| 05 | ????android:orientation="horizontal" > |
| 08 | ????????android:id="@+id/imageView1" |
| 09 | ????????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" /> |
| 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" /> |
??????? 接下來寫一個類繼承LinearLayout,導入剛剛的布局,并且設置需要的方法,從而使的能在代碼中控制這個自定義控件內容的顯示。
| 01 | public class ImageBtn extends LinearLayout { |
| 03 | ????private ImageView imageView; |
| 04 | ????private TextView? textView; |
| 06 | ????public ImageBtn(Context context) { |
| 07 | ????????super(context); |
| 08 | ????????// TODO Auto-generated constructor stub |
| 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); |
| 22 | ????public void setImageResource(int resId) {? |
| 23 | ????????imageView.setImageResource(resId);? |
| 29 | ????public void setTextViewText(String text) {? |
| 30 | ????????textView.setText(text);? |
???? 在需要使用這個自定義控件的layout中加入這控件,只需要在xml中加入即可。
| 01 | <?xml version="1.0" encoding="utf-8"?> |
| 02 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 03 | ????android:layout_width="fill_parent" |
| 04 | ????android:layout_height="fill_parent" |
| 05 | ????android:orientation="horizontal" > |
| 07 | ????<cn.com.karl.view.ImageBtn |
| 08 | ????????android:id="@+id/btn_right" |
| 09 | ????????android:layout_height="wrap_content"? |
| 10 | ????????android:layout_width="wrap_content" |
| 11 | ????????android:background="@drawable/btn"? |
| 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"? |
??????? 這里用到了背景圖片 在drawable/btn.xml
| 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <selector xmlns:android="http://schemas.android.com/apk/res/android" > |
| 4 | ????<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> |
| 5 | ????<item android:state_pressed="true" android:drawable="@drawable/btn_white"></item> |
| 6 | ????<item android:state_checked="true" android:drawable="@drawable/btn_white"></item> |
| 7 | ????<item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> |
?
最后在activity中設置該控件,和其他控件差不多:
| 01 | public class IdentifyButtonActivity extends Activity { |
| 02 | ???private ImageBtn imageBtn1; |
| 03 | ???private ImageBtn imageBtn2; |
| 05 | ????protected void onCreate(Bundle savedInstanceState) { |
| 06 | ????????// TODO Auto-generated method stub |
| 07 | ????????super.onCreate(savedInstanceState); |
| 08 | ????????setContentView(R.layout.identifybutton); |
| 10 | ????????imageBtn1=(ImageBtn) this.findViewById(R.id.btn_right); |
| 11 | ????????imageBtn2=(ImageBtn) this.findViewById(R.id.btn_error); |
| 12 | ????????imageBtn1.setTextViewText("確定"); |
| 13 | ????????imageBtn2.setTextViewText("取消"); |
| 14 | ????????imageBtn1.setImageResource(R.drawable.right_icon); |
| 15 | ????????imageBtn2.setImageResource(R.drawable.error_icon); |
| 17 | ????????imageBtn1.setOnClickListener(new View.OnClickListener() { |
| 19 | ????????????public void onClick(View v) { |
| 20 | ????????????????// TODO Auto-generated method stub |
| 21 | ????????????????Toast.makeText(getApplicationContext(), "點擊的正確按鈕", 1).show(); |
| 25 | ????????imageBtn2.setOnClickListener(new View.OnClickListener() { |
| 27 | ????????????public void onClick(View v) { |
| 28 | ????????????????// TODO Auto-generated method stub |
| 29 | ????????????????Toast.makeText(getApplicationContext(), "點擊的錯誤按鈕", 1).show(); |
??????? 最后看看我們自定義控件的效果吧!
???? 點擊后還有按下按鈕的效果。
轉載于:https://www.cnblogs.com/xgjblog/p/3633578.html
總結
以上是生活随笔為你收集整理的android自定义控件实例的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。