android自訂控制項執行個體

來源:互聯網
上載者:User

               很多時候android常用的控制項不能滿足我們的需求,那麼我們就需要自訂一個控制項了。今天做了一個自訂控制項的執行個體,來分享下。

              首先定義一個layout實現按鈕內部布局:

      

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal" >    <ImageView        android: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" />    <TextView        android: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,匯入剛剛的布局,並且設定需要的方法,從而使的能在代碼中控制這個自訂控制項內容的顯示。

     

public class ImageBtn extends LinearLayout {private ImageView imageView;private TextView  textView;public ImageBtn(Context context) {super(context);// TODO Auto-generated constructor stub}public ImageBtn(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubLayoutInflater inflater=(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);}/**      * 設定圖片資源      */      public void setImageResource(int resId) {          imageView.setImageResource(resId);      }        /**      * 設定顯示的文字      */      public void setTextViewText(String text) {          textView.setText(text);      }  }

    
在需要使用這個自訂控制項的layout中加入這控制項,只需要在xml中加入即可。

  

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns: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.ImageBtn        android:id="@+id/btn_right"        android:layout_height="wrap_content"          android:layout_width="wrap_content"        android:background="@drawable/btn"          />    <cn.com.karl.view.ImageBtn        android: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

   

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

      最後在activity中設定該控制項,和其他控制項差不多:

    

public class IdentifyButtonActivity extends Activity {   private ImageBtn imageBtn1;   private ImageBtn imageBtn2;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(), "點擊的正確按鈕", 1).show();}});        imageBtn2.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(), "點擊的錯誤按鈕", 1).show();}});}}

        最後看看我們自訂控制項的效果吧!

       
   

     點擊後還有按下按鈕的效果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.