标签

作者: 谜之龙 | 来源:发表于2017-08-21 16:57 被阅读0次

    导入依赖 app

          compile 'com.github.donkingliang:LabelsView:1.2.0'
    

    导入外面的build.gradle

           allprojects {
          repositories {
        ...
        maven { url 'https://jitpack.io' }
        }
       }
    

    布局
    NONE :标签不可选中,也不响应选中事件监听,这是默认值。
    SINGLE:单选。
    MULTI:多选,可以通过设置maxSelect限定选择的最大数量,0为不限数量

          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.aa.myapplication.MainActivity">
    <com.donkingliang.labels.LabelsView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/labels"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:minHeight="25dp"
        android:padding="5dp"
        app:labelBackground="@drawable/label_bg"
        app:labelTextColor="@drawable/label_text_color"
        app:labelTextPaddingBottom="5dp"
        app:labelTextPaddingLeft="10dp"
        app:labelTextPaddingRight="10dp"
        app:labelTextPaddingTop="5dp"
        app:labelTextSize="14sp"
        app:lineMargin="10dp"   /行与行的距离
        app:maxSelect="3"    //标签的最大选择数量,只有多选的时候才有用,0为不限数量
        app:selectType="MULTI"   //标签的选择类型 有单选、多选、不可选三种类型
        app:wordMargin="10dp"   //标签与标签的距离
        />
      </LinearLayout>
    

    主界面的代码

        public class MainActivity extends AppCompatActivity{
    
    private LabelsView labelsView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        labelsView = (LabelsView) findViewById(R.id.labels);
        //测试的数据
        ArrayList<String> label = new ArrayList<>();
        label.add("Android");
        label.add("IOS");
        label.add("前端");
        label.add("后台");
        label.add("微信开发");
        label.add("游戏开发");
        label.add("Java");
        label.add("JavaScript");
        label.add("C++");
        label.add("PHP");
        label.add("Python");
        label.add("Swift");
        labelsView.setLabels(label);
    }
     }
    

    点击时的变化

             <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 标签选中时的背景 -->
    <item android:state_selected="true">
        <shape>
            <stroke android:width="2dp" android:color="#fb435b" />
            <corners android:radius="8dp" />
            <solid android:color="@android:color/white" />
        </shape>
    </item>
    <!-- 标签的正常背景 -->
    <item>
        <shape>
            <stroke android:width="2dp" android:color="#656565" />
            <corners android:radius="8dp" />
            <solid android:color="@android:color/white" />
        </shape>
    </item>
        </selector>
    

    监听事件

          //标签的点击监听
        labelsView.setOnLabelClickListener(new LabelsView.OnLabelClickListener() {
    @Override
    public void onLabelClick(View label, String labelText, int position) {
         //label是被点击的标签,labelText是标签的文字,position是标签的位置。
    }
         });
      //标签的选中监听
          labelsView.setOnLabelSelectChangeListener(new LabelsView.OnLabelSelectChangeListener() {
     @Override
         public void onLabelSelectChange(View label, String labelText, boolean isSelect, int position) {
        //label是被点击的标签,labelText是标签的文字,isSelect是是否选中,position是标签的位置。
         }
          });
    

    方法

                  //设置选中标签。
             //positions是个可变类型,表示被选中的标签的位置。
          //比喻labelsView.setSelects(1,2,5);选中第1,3,5个标签。如果是单选的话,只有第一个参数有效。
           public void setSelects(int... positions);
    
               //获取选中的标签。返回的是一个Integer的数组,表示被选中的标签的下标。如果没有选中,数组的size等于0。
           public ArrayList<Integer> getSelectLabels();
    
           //取消所有选中的标签。
          public void clearAllSelect();
    
             //设置标签的选择类型,有NONE、SINGLE和MULTI三种类型。
             public void setSelectType(SelectType selectType);
      //设置最大的选择数量,只有selectType等于MULTI是有效。
          public void setMaxSelect(int maxSelect);
    
            //设置标签背景
         public void setLabelBackgroundResource(int resId);
    
           //设置标签的文字颜色
                public void setLabelTextColor(int color);
           public void setLabelTextColor(ColorStateList color);
    
                  //设置标签的文字大小(单位是px)
       public void setLabelTextSize(float size);
       //设置标签内边距
           public void setLabelTextPadding(int left, int top, int right, int bottom);
         //设置行间隔
           public void setLineMargin(int margin);
               //设置标签的间隔
            public void setWordMargin(int margin);
    

    相关文章

      网友评论

          本文标题:标签

          本文链接:https://www.haomeiwen.com/subject/bpqhdxtx.html