当前位置:   article > 正文

Android 动态添加标签及其点击事件_android linearlayout动态添加textview 及textview点击事件

android linearlayout动态添加textview 及textview点击事件

在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下。


标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签。通过动态添加TextView作为标签,并给TextView设置背景,通过selector选择器改变其背景颜色,来确定是否处于选中状态。


代码如下所示:


1、标签的布局文件,我在标签里只设置了一个TextView

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:id="@+id/textView1"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_margin="10dp"
  11. android:background="@drawable/mark_select"
  12. android:enabled="false"
  13. android:padding="10dp"
  14. android:text="TextView" />
  15. </LinearLayout>


2、在res文件夹下新建drawable文件夹,标签的背景设为@drawable/mark_select,代码如下所示:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <item android:drawable="@drawable/mark_notbeselected" android:state_enabled="false"/>
  4. <item android:drawable="@drawable/mark_beselected" android:state_enabled="true"/>
  5. </selector>

当标签处于选中状态,背景为@drawable/mark_beselected,当标签处于未选中状态,背景为@drawable/mark_notbeselected

其中mark_notbeselected代码为:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <solid android:color="#ffffff" />
  4. <corners android:radius="3dip" />
  5. <stroke
  6. android:width="1dip"
  7. android:color="#1cb0ba" />
  8. </shape>
mark_beselected代码为:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <solid android:color="#1cb0ba" />
  4. <corners android:radius="3dip" />
  5. <stroke
  6. android:width="1dip"
  7. android:color="#1cb0ba" />
  8. </shape>

3、主页面布局文件里包括一个水平滚动条HorizontalScrollView,代码如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:orientation="vertical" >
  5. <HorizontalScrollView
  6. android:id="@+id/horizontalScrollView1"
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content" >
  9. <LinearLayout
  10. android:id="@+id/linearLayout1"
  11. android:layout_width="match_parent"
  12. android:layout_height="match_parent"
  13. android:orientation="horizontal" >
  14. </LinearLayout>
  15. </HorizontalScrollView>
  16. </LinearLayout>

4、MainActivity.java代码如下所示:
  1. public class MainActivity extends Activity {
  2. List<String> list;
  3. private LinearLayout linearLayout;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
  9. //添加标签内容
  10. list = new ArrayList<String>();
  11. for (int i = 0; i < 10; i++) {
  12. String str = "标签" + i;
  13. list.add(str);
  14. }
  15. //初始化标签
  16. initMarksView();
  17. }
  18. private void initMarksView() {
  19. for (int i = 0; i < list.size(); i++) {
  20. View view = View.inflate(MainActivity.this, R.layout.mark_layout, null);
  21. TextView tv = (TextView) view.findViewById(R.id.textView1);
  22. tv.setText(list.get(i));
  23. tv.setTag(i);
  24. view.setTag(false);
  25. // 设置view的点击事件,与onClick中的View一致
  26. //否则需要在onClick中,去findViewById,找出设置点击事件的控件进行操作
  27. //若不如此,则无法触发点击事件
  28. view.setOnClickListener(new OnClickListener() {
  29. @Override
  30. public void onClick(View v) {
  31. // TODO Auto-generated method stub
  32. TextView tv = (TextView) v.findViewById(R.id.textView1);
  33. Log.i("dxl", "TextView click");
  34. if ((Boolean) v.getTag()) {
  35. v.setTag(false);
  36. tv.setEnabled(false);
  37. Toast.makeText(MainActivity.this, "你取消了选择标签" + tv.getTag(), Toast.LENGTH_SHORT).show();
  38. } else {
  39. v.setTag(true);
  40. tv.setEnabled(true);
  41. Toast.makeText(MainActivity.this, "你选择了标签" + tv.getTag(), Toast.LENGTH_SHORT).show();
  42. }
  43. }
  44. });
  45. linearLayout.addView(view);
  46. }
  47. }
  48. }

至此,便实现了动态添加表情,并可以处理标签点击事件的功能。


源代码下载:Android 动态添加标签及其点击事件


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/384770
推荐阅读
相关标签
  

闽ICP备14008679号