ScrollView入门笔记

ScrollView的分为两种

1.HorizontalScrollView:水平滚动条视图(可能以后会取代gallery的效果)

2.ScrollView:垂直滚动条视图

常用属性

android:scrollbars ="none" 属性:滚动条是横向纵向还是隐藏

 代码设置:setHorizontalScrollBarEnabled(false)

       setVerticalScrollBarEnabled(false)

事件:OnTouchListener

方法:scrollTo:以滚动视图起始位置开始计算的

        scrollBy:相对前一次的位置,去滚动对应的距离

问题:如果和判断滑动到顶部,和底部。

顶部:调用getScrollY() 纵向的滚动距离为0

底部:当 getMeasuredHeight()控件的高度=getHeight() 手机屏幕+getScrollY()滚动距离满足的时候

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" 
    android:orientation="vertical"
    >
         <Button 
         android:id="@+id/up"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="up"
         />
     <Button 
         android:id="@+id/down"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="down"
         />
     <ScrollView 
         android:id="@+id/scroll"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:scrollbars="none"
         >
    <TextView 
        android:id="@+id/context"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        />
</ScrollView>
</LinearLayout>

代码:

package com.example.scrollview;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnTouchListener,
		OnClickListener {

	private TextView tv;
	private ScrollView sv;
	private Button up_bt;
	private Button down_bt;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tv = (TextView) findViewById(R.id.context);
		tv.setText(getResources().getString(R.string.context));
		sv = (ScrollView) findViewById(R.id.scroll);
		up_bt = (Button) findViewById(R.id.up);
		down_bt = (Button) findViewById(R.id.down);
		down_bt.setOnClickListener(this);
		up_bt.setOnClickListener(this);
		sv.setOnTouchListener(this);
	}

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_MOVE:
			/**
			 * getScrollY() 滚动条滑动的距离 
			 * getMeasuredHeight() 控件的高度
			 * getHeight() 屏幕的高度
			 */
			// 滑动到顶部
			if (sv.getScrollY() <= 0) {
				Log.i("Main", "顶部" + sv.getScrollY());
			}
			// 底部状态
			// TextView的总高度<=屏幕的高度+滚动条的滚动距离
			if (sv.getChildAt(0).getMeasuredHeight() <= sv.getScrollY()
					+ sv.getHeight()) {
				Log.i("Main", "底部");
				tv.append(getResources().getString(R.string.context));
			}
			break;
		}
		return false;
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.up:
			sv.scrollBy(0,-5);
			break;
		case R.id.down:
			sv.scrollBy(0,5);
			break;

		}
	}

}

运行效果

ScrollView入门笔记

你可能感兴趣的:(ScrollView入门笔记)