RadioButton和HorizontalScrollView实现分类标签

来源:互联网 发布:计算机算法书籍推荐 编辑:程序博客网 时间:2024/05/18 03:36

RadioButton和HorizontalScrollView实现分类标签

最近一周学习一个项目,需要实现一个电影的分类查找如下图(下图是自己实现的效果~~):
这里写图片描述

下面就用HorizontalScrollView和RadioButton来实现这个效果:

1、布局:

首先,我们放三个HorizontalScrollView,在每个HorizontalScrollView中放一个水平的RadioGroup。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="160dp"    android:background="@android:color/white"    android:orientation="vertical"    android:paddingTop="10dp">    <HorizontalScrollView        android:layout_width="match_parent"        android:layout_height="40dp"        android:scrollbars="none">        <RadioGroup            android:id="@+id/ll_type"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal">            <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"                android:id="@+id/line1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/tag_text_selector"                android:button="@null"                android:gravity="center"                android:paddingBottom="5dp"                android:paddingLeft="15dp"                android:paddingRight="15dp"                android:paddingTop="5dp"                android:text="全部"                android:textColor="@color/tag_text_selector"                android:textSize="10sp"></RadioButton>        </RadioGroup>    </HorizontalScrollView>        <HorizontalScrollView        android:layout_width="match_parent"        android:layout_height="40dp"        android:scrollbars="none">        <RadioGroup            android:id="@+id/ll_area"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal">            <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"                android:id="@+id/line2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/tag_text_selector"                android:button="@null"                android:gravity="center"                android:paddingBottom="5dp"                android:paddingLeft="15dp"                android:paddingRight="15dp"                android:paddingTop="5dp"                android:text="全部"                android:textColor="@color/tag_text_selector"                android:textSize="10sp"></RadioButton>        </RadioGroup>    </HorizontalScrollView>    <HorizontalScrollView        android:layout_width="match_parent"        android:layout_height="40dp"        android:scrollbars="none">        <RadioGroup            android:id="@+id/ll_time"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal">            <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"                android:id="@+id/line3"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/tag_text_selector"                android:button="@null"                android:gravity="center"                android:paddingBottom="5dp"                android:paddingLeft="15dp"                android:paddingRight="15dp"                android:paddingTop="5dp"                android:text="全部"                android:textColor="@color/tag_text_selector"                android:textSize="10sp"></RadioButton>        </RadioGroup>    </HorizontalScrollView>    <HorizontalScrollView        android:layout_width="match_parent"        android:layout_height="40dp"        android:scrollbars="none">        <RadioGroup            android:id="@+id/ll_sort"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal">         </RadioGroup>        </HorizontalScrollView>    </LinearLayout>

2、 每一个标签的布局:

然后在写一个RadioButton的布局,这个布局就是标签的布局

    <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/rb_tag"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:button="@null"    android:gravity="center"    android:text="你好"    android:paddingBottom="5dp"    android:paddingTop="5dp"    android:paddingLeft="15dp"    android:paddingRight="15dp"    android:textSize="10sp"    android:textColor="@color/tag_text_selector"    android:background="@drawable/tag_text_shape"    ></RadioButton>

tag_text_selector和tag_text_shape是按下去的颜色选择器和button的形状shape。

tag_text_selector:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:color="#000000" android:state_checked="false"></item>    <item android:color="#ffffff" android:state_checked="true"></item></selector>

tag_text_shape:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_checked="false" android:drawable="@drawable/type_text_shape"></item>    <item android:state_checked="true" android:drawable="@drawable/type_text_press_shape"></item></selector>

type_text_shape:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">    <corners android:radius="20dp"></corners>    <solid android:color="#ffffff"></solid>    <stroke        android:color="#22000000"        android:width="1dp"        ></stroke></shape>

type_text_press_shape:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">    <corners android:radius="20dp"></corners>    <solid android:color="@android:color/holo_red_dark"></solid>    <stroke        android:color="#22000000"        android:width="1dp"        ></stroke></shape>

3、动态添加标签

在这里注意要想设置单选效果必须给每一个RadioButton设置一个id;

    private void initSelectCndition(LinearLayout linearLayout, int i, String name) {        View view = View.inflate(this, R.layout.item_tag, null);        RadioButton rb = (RadioButton) view;        rb.setText(name.trim());        //设置id后这样才能选中设置为单选效果        rb.setId(i);        rb.setTag(i);        //点击事件        view.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                RadioButton rb = (RadioButton) v;                String text = rb.getText().toString();                position = (int) rb.getTag();                checkPosition(text);               //联网更新数据                getDataFromNet();            }        });        //这里注意一定要用RadioGroup的,如果用线性的会导致参数设置无效        RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,                RadioGroup.LayoutParams.WRAP_CONTENT);        //设置边距:每个标签之间的距离        layoutParams.setMargins(DensityUtil.dip2px(this, 5), 0, DensityUtil.dip2px(this, 5), 0);        //添加到我们的布局中        linearLayout.addView(view, layoutParams);

就这么简单,这里效果就出来了,如果想在点击后做什么,就在点击事件中处理就OK。

4 0
原创粉丝点击