android 仿网易新闻滑动tab栏,HorizontalScrollView和rediogroup实现

来源:互联网 发布:淘宝怎么举报别人盗图 编辑:程序博客网 时间:2024/06/06 02:49

最近在网上看到一片博客,做仿网易新闻滑动tab栏,用到的是Linearlayout和textview,我感觉这样做性能优化做的不好,所以自己尝试了用HorizontalScrollView分别和button,textview还有rediogroup实现,最后感觉还是使用HorizontalScrollView和rediogroup实现效率高一点。

做出来是这个样子


activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/root"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#ffffff"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/LinearLayout04"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <HorizontalScrollView            android:id="@+id/hs2"            android:layout_width="260dp"            android:layout_height="wrap_content"            android:scrollbarAlwaysDrawHorizontalTrack="false"            android:scrollbars="none" >            <RadioGroup                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:orientation="horizontal" >                <RadioButton                    android:id="@+id/toutiao"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:checked="true"                    android:text="头条"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />                <RadioButton                    android:id="@+id/yule"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:text="娱乐"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />                <RadioButton                    android:id="@+id/redian"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:text="热点"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />                <RadioButton                    android:id="@+id/tiyu"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:text="体育"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />                <RadioButton                    android:id="@+id/shanghai"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:text="上海"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />                <RadioButton                    android:id="@+id/caijing"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:button="@null"                    android:text="财经"                    android:textColor="@drawable/textview_color"                    android:textSize="18sp" />            </RadioGroup>        </HorizontalScrollView>        <Button            android:layout_width="wrap_content"            android:layout_height="40dp"            android:background="@drawable/button"            android:text="更多" />    </LinearLayout></LinearLayout>

mainactivity.java

package com.example.wytest;import android.app.Activity;  import android.os.Bundle;  import android.widget.Button;import android.widget.HorizontalScrollView;  public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}      /** Called when the activity is first created. */      }  

res下自己创建一个drawable,里面建立一个textview_color.xml

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



这里说下我做的时候遇见的问题,HorizontalScrollView的直接子元素只能有一个,如果有多个会报出非法状态异常。

我在用button实现时由于button本身按下抬起手后不能保存state_focused="true"的状态(按钮抬手后按钮也起来了),所以我没能实现像rediobutton这样自定义属性实现,我在尝试的时候只是会闪一下红色。


0 1