您的位置:首页 > 移动开发 > Android开发

使用ScrollView实现滚动

2016-02-16 15:59 696 查看

一、ScrollView介绍

滚动视图是指当拥有很多内容,屏幕显示不完时,需要通过滚动来显示完整的视图

二、ScrollView的种类

HorizontalScrollView:水平滚动视图

ScrollView:垂直滚动视图

<HorizontalScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</HorizontalScrollView>


三、隐藏ScrollView

(1)标签属性:android:scrollbars=”none”

(2)代码设置:

setHorizontalScrollBarEnabled(false);隐藏横向ScrollView

setVerticalScrollBarEnabled(false);隐藏纵向ScrollView

四、setOnTouchListener的使用

应用案例:判断ScrollView何时滑动到底部

public class MainActivity extends AppCompatActivity {

private TextView tv;
private ScrollView scroll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv= (TextView) findViewById(R.id.content);
tv.setText(getResources().getString(R.string.content));
scroll  = (ScrollView) findViewById(R.id.scroll);
scroll.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_MOVE:
{
/**
* (1)getScrollY()---滚动条滑动的距离
* (2)getMeasuredHeight()获取的整个高度
* (3)getHeight()
*/
//顶部状态
if(scroll.getScrollY()<=0)
{
Log.i("Main", "顶部");
}
//底部状态
//TextView的总高度<=一屏幕的高度+滚动条的滚动距离
if(scroll.getChildAt(0).getMeasuredHeight()<=scroll.getHeight()+scroll.getScrollY()){
Log.i("Main","底部");
Log.i("Main","scroll.getChildAt(0).getMeasuredHeight()<=scroll.getHeight()="+scroll.getChildAt(0).getMeasuredHeight()+"scrol,getHeight()="+scroll.getHeight()+"scroll.getScrollY()="+scroll.getScaleY());
tv.append(getResources().getString(R.string.content));//滑动到底部追加新的文字
}
break;
}
}
return false;
}
});
}


五、控制ScrollView视图位置

1、scrollTo和ScrollBy区别

应用案例:控制ScrollView视图位置

@Override
public void onClick(View view) {
switch (view.getId()){
//scrollTo:以滚动视图其实位置开始计算
//scrollBy:相对前一次位置,去滚动对应的距离
case R.id.up:
{
scroll.scrollTo(0,-30);
break;
}
case R.id.down:
{
scroll.scrollTo(0,30);
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 布局