Android自訂控制項LinearLayout執行個體講解_Android

來源:互聯網
上載者:User

很多時候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">  <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 extendsLinearLayout {  privateImageView imageView; privateTextView textView;  publicImageBtn(Context context) { super(context); // TODO Auto-generated constructor stub } publicImageBtn(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub LayoutInflater 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); }  /** * 設定圖片資源 */ publicvoidsetImageResource(intresId) { imageView.setImageResource(resId); }  /** * 設定顯示的文字 */ publicvoidsetTextViewText(String text) { 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.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

 <?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中設定該控制項,和其他控制項差不多:

 public class IdentifyButtonActivity extendsActivity { privateImageBtn imageBtn1;  privateImageBtn imageBtn2; @Override protectedvoidonCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.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(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"點擊的正確按鈕",1).show(); } });  imageBtn2.setOnClickListener(newView.OnClickListener() {  publicvoidonClick(View v) { // TODO Auto-generated method stub Toast.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.