您好,登錄后才能下訂單哦!
在做Android開發的時候,會遇到動態添加標簽讓用戶選擇的功能,所以自己寫了個例子,運行效果圖如下。
標簽可以左右滑動進行選擇,點擊的時候,會彈出toast提示選擇或者取消選擇了哪個標簽。通過動態添加TextView作為標簽,并給TextView設置背景,通過selector選擇器改變其背景顏色,來確定是否處于選中狀態。
代碼如下所示:
1、標簽的布局文件,我在標簽里只設置了一個TextView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="@drawable/mark_select" android:enabled="false" android:padding="10dp" android:text="TextView" /> </LinearLayout>
2、在res文件夾下新建drawable文件夾,標簽的背景設為@drawable/mark_select,代碼如下所示:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/mark_notbeselected" android:state_enabled="false"/> <item android:drawable="@drawable/mark_beselected" android:state_enabled="true"/> </selector>
當標簽處于選中狀態,背景為@drawable/mark_beselected,當標簽處于未選中狀態,背景為@drawable/mark_notbeselected
其中mark_notbeselected代碼為:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#ffffff" /> <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#1cb0ba" /> </shape>
mark_beselected代碼為:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#1cb0ba" /> <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#1cb0ba" /> </shape>
3、主頁面布局文件里包括一個水平滾動條HorizontalScrollView,代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> </HorizontalScrollView> </LinearLayout>
4、MainActivity.java代碼如下所示:
public class MainActivity extends Activity { List<String> list; private LinearLayout linearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); linearLayout = (LinearLayout) findViewById(R.id.linearLayout1); //添加標簽內容 list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { String str = "標簽" + i; list.add(str); } //初始化標簽 initMarksView(); } private void initMarksView() { for (int i = 0; i < list.size(); i++) { View view = View.inflate(MainActivity.this, R.layout.mark_layout, null); TextView tv = (TextView) view.findViewById(R.id.textView1); tv.setText(list.get(i)); tv.setTag(i); view.setTag(false); // 設置view的點擊事件,與onClick中的View一致 //否則需要在onClick中,去findViewById,找出設置點擊事件的控件進行操作 //若不如此,則無法觸發點擊事件 view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub TextView tv = (TextView) v.findViewById(R.id.textView1); Log.i("dxl", "TextView click"); if ((Boolean) v.getTag()) { v.setTag(false); tv.setEnabled(false); Toast.makeText(MainActivity.this, "你取消了選擇標簽" + tv.getTag(), Toast.LENGTH_SHORT).show(); } else { v.setTag(true); tv.setEnabled(true); Toast.makeText(MainActivity.this, "你選擇了標簽" + tv.getTag(), Toast.LENGTH_SHORT).show(); } } }); linearLayout.addView(view); } } }
至此,便實現了動態添加表情,并可以處理標簽點擊事件的功能。
源代碼下載:Android動態添加標簽及其點擊事件
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。