本文讲述了Android自定义横向滑动菜单的实现。分享给大家供大家参考,具体如下:
前言
开发安卓过程中,经常会用到标题栏的样式,有时候传统方式不能满足开发者的需要,这时候就需要自定义控件来实现。(注意:本文提供思路,有关键代码,但是代码不全)
标题栏说明
自定义标题栏ColumnHorizontalScrollView继承HorizontalScrollView 这个安卓原生的控件,HorizontalScrollView是一种FrameLayout(框架布局),其子项被滚动查看时是整体移动的,并且子项本身可以是一个有复杂层次结构的布局管理器。一个常见的应用是子项在水平方向中,用户可以滚动显示顶层水平排列的子项(items)。
在布局文件中添加ColumnHorizontalScrollView控件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tabs="http://schemas.android.com/apk/res-auto"
android:id="@+id/homeTabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/db_bg_gray"
android:orientation="vertical"
<com.wankr.app.widget.ColumnHorizontalScrollView
android:id="@+id/mColumnHorizontalScrollView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerVertical="true"
android:scrollbars="none"
<LinearLayout
android:id="@+id/mRadioGroup_content"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="10.0dip"
android:paddingRight="10.0dip" /
</com.wankr.app.widget.ColumnHorizontalScrollView
<android.support.v4.view.ViewPager
android:id="@+id/contentPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" /
</LinearLayout
横向菜单中展示界面 注意:可以设置菜单中标题的宽度大小,最好标题宽度一致。
package com.example.app;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.LayoutParams;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Fragment implements OnClickListener {
private ViewPager contentPager;
private ContentPagerAdapter pagerAdapter;
private ColumnHorizontalScrollView mColumnHorizontalScrollView;
private LinearLayout mRadioGroup_content;
/** 请求CODE */
public final static int CHANNELREQUEST = 1;
/** 屏幕宽度 */
private int mScreenWidth = 0;
/** Item宽度 */
private int mItemWidth = 0;
/** 当前选中的栏目*/
private int columnSelectIndex = 0;
// 标签信息
private List<ChannelItem channelItems