1. 程式人生 > >簡述view的tag屬性的使用以及將其運用到程式碼佈局

簡述view的tag屬性的使用以及將其運用到程式碼佈局

今天我們只探討view本身,那我們就先看view的屬性,屬性比較多,我只拿出一部分開發經常用的屬性來進行講解

* android:background


* 設定背景色/背景圖片。可以通過以下兩種方法設定背景為透明:"@android:color/transparent"
* 和"@null"。注意TextView預設是透明的
* ,不用寫此屬性,但是Buttom/ImageButton/ImageView想透明的話就得寫這個屬性了。

* android:clickable 

            是否響應點選事件。 android:focusable 這個屬性在自定義鍵盤或者在tv端比較常用
* 設定是否獲得焦點。若有requestFocus()被呼叫時,後者優先處理。注意在表單中想設定某一個如EditText獲取焦點
* ,光設定這個是不行的,需要將這個EditText前面的focusable都設定為false才行
* 。在Touch模式下獲取焦點需要設定focusableInTouchMode為true。

* android:focusableInTouchMode            設定在Touch模式下View是否能取得焦點。

* android:longClickable                              設定是否響應長按事件.

* android:tag                                              

* 設定一個文字標籤。可以通過View.getTag()或 for with
* View.findViewWithTag()檢索含有該標籤字串的View。但
* 一般最好通過ID來查詢View,因為它的速度更快,並且允
* 許編譯時型別檢查。


* 這個我們主要講一下這個tag的屬性,我們來自定義3個按鈕,我們通過tag的屬性來判斷點選哪個按鈕了

程式碼比較簡單,廢話不說,直接上程式碼

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLinearLayout = new LinearLayout(this);
mLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
mLinearLayout.setGravity(Gravity.CENTER_HORIZONTAL);//設定mLinearLayout的Gravity的屬性,同理,只要xml可以配置的屬性,程式碼中幾乎都能設定
setContentView(mLinearLayout);
InitView();
// View
// ViewGroup
}

      /**
* 動態建立三個按鈕
*/


private void InitView() {


for (int i = 0; i < 3; i++) {
Button button = new Button(this);
button.setClickable(true);
button.setOnClickListener(this);
button.setTag(i); //給每個按鈕設定tag標記
button.setText("按鈕" + (i + 1));
button.setTextSize(40);
mLinearLayout.addView(button);//將每個按鈕放到容器中
}


}


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int tag = (Integer) v.getTag();
switch (tag) {
case BUTTON_0:
Log.e("TAG", "點選第一個按鈕");
break;
case BUTTON_1:
Log.e("TAG", "點選第二個按鈕");
break;
case BUTTON_2:
Log.e("TAG", "點選第三個按鈕");
break;


}


}

程式碼非常簡單,只是粗略的寫了動態新增控制元件的程式碼和tag屬性的簡單運用