horizontalscrollview

来源:互联网 发布:淘宝有客服投诉电话 编辑:程序博客网 时间:2024/04/26 03:56

activity_custom_hscrollview_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >        <com.example.horizontalscrollview.MyScrollView            android:id="@+id/myView"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:scrollbars="none" >            <LinearLayout                android:id="@+id/sortliner"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:gravity="center"                android:orientation="horizontal"                android:paddingLeft="10dp"                android:paddingRight="10dp" >            </LinearLayout>        </com.example.horizontalscrollview.MyScrollView></LinearLayout>

MainActivity

package com.example.horizontalscrollview;import com.example.horizontalscrollview.MyScrollView.OnScrollListener1;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends Activity {private MyScrollView myView;// 自定义的滑动viewprivate LinearLayout sortliner;// 滑动条private LayoutParams params;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_custom_hscrollview_main);initView();initData(params);myView.setOnScrollListener(new OnScrollListener1() {@Overridepublic void onScroll() {}@Overridepublic void onRight() {}@Overridepublic void onLeft() {}});}public void initView() {// 获取ScrollView视图myView = (MyScrollView) findViewById(R.id.myView);// 获取ScrollView视图下的子视图sortliner = (LinearLayout) findViewById(R.id.sortliner);params = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);sortliner.removeAllViews();}/** * 准备数据 addView(View child, int index, LayoutParams params) */private void initData(LayoutParams params) {for (int i = 0; i < 10; i++) {// 往二级分类中加载数据Button sort = new Button(MainActivity.this);// 给二级分类赋值sort.setText("测试" + i);// 设置字体大小sort.setTextSize(15);// 设置二级分类的最小高度sort.setMinHeight(30);// 设置二级分类的周边sort.setPadding(20, 5, 20, 5);// 把TextView添加到滑动条内sortliner.addView(sort, i, params);}}}


MyScrollView

package com.example.horizontalscrollview;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.widget.HorizontalScrollView;public class MyScrollView extends HorizontalScrollView{public MyScrollView(Context context) {super(context);}public MyScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public MyScrollView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {        View view = (View) getChildAt(getChildCount()-1);        // 如果为0,证明滑动到最左边        if(view.getLeft()-getScrollX()==0){        onScrollListener.onLeft();        //如果为0证明滑动到最右边        }else if((view.getRight()-(getWidth()+getScrollX()))==0){        onScrollListener.onRight();        //说明在中间        }else{        onScrollListener.onScroll();        }        super.onScrollChanged(l, t, oldl, oldt);}        /**     * 定义接口     * @author admin     */    public interface OnScrollListener1{    void onRight();    void onLeft();    void onScroll();    }    private OnScrollListener1 onScrollListener;    public void setOnScrollListener(OnScrollListener1 onScrollListener){    this.onScrollListener=onScrollListener;    }}



0 0
原创粉丝点击