scrollTo()相对于左上角进行滚动,scrollBy()相对于上次滑动的位置进行滑动。
ScrollView滑动到指定的位置,让焦点显示。
——————————————————————>
getMeasuredHeight() 获取高度
getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。
当超出屏幕后, getMeasuredHeight() 等于 getHeight()加上屏幕之外没有显示的大小。
——————————————————————>
<HorizontalScrollView>, <ScrollView>只能有一个子控件;
获取资源文件对象,通过传递id,获取对应的资源;隐藏ScrollView的滚动条,xml中配置,代码中设置;
判断ScrollView什么时候滑动到底部?
TextView中的append方法,追加刷新
控制滚动条滚动的位置: ScrollTo与ScrollBy的区别 参考的坐标系不一样
package com.lantu.tuhuadmin.testapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
private ScrollView scroll_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_down = (Button) findViewById(R.id.btn_down);
Button btn_up = (Button) findViewById(R.id.btn_up);
btn_down.setOnClickListener(MainActivity.this);
btn_up.setOnClickListener(MainActivity.this);
//不滚动显示不完整,通过Resources对象,获取资源
final TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(getResources().getText(R.string.tv_content));
//在布局文件中,通过让tv成为ScrollView的子控件实现滚动
//通过代码实现隐藏滚动条
scroll_view = (ScrollView) findViewById(R.id.scroll_view);
scroll_view.setVerticalScrollBarEnabled(false);
//scroll_view.setHorizontalScrollBarEnabled(false);
//如何控制ScrollView视图的位置?
//监听ScrollView什么时候能够滑动到底部? 通过设置触摸监听实现
scroll_view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: {
/**
* getScrollBy() 滚动条滑动的距离
* getHeight() 获取控件显示的高度
* getMeasuredHeight() 获取控件总的高度,包括隐藏起来的。
*/
if (scroll_view.getScaleY() < 0 || scroll_view.getScaleY() == 0) {
//说明ScrollView没有滑动
Log.i(TAG, "顶部");
}
//滑动条滑动到最底部的位置时 TextView的总高度=getScaleY()+getHeight()
//获取TextView的总高度:scroll_view.getChildAt(0).getMeasuredHeight()
//一屏幕的高度:scroll_view.getHeight()
if (scroll_view.getChildAt(0).getMeasuredHeight() < scroll_view.getScaleY() + scroll_view.getHeight() || scroll_view.getChildAt(0).getMeasuredHeight() == scroll_view.getScaleY() + scroll_view.getHeight()) {
Log.i(TAG, "滑动到底部");
//实现刷新效果 追加要显示的内容
tv.append(getResources().getText(R.string.tv_content));
}
}
break;
case MotionEvent.ACTION_DOWN: {
}
break;
case MotionEvent.ACTION_UP: {
}
break;
}
return false;
}
});
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_down: {
//向下滑动
// scroll_view.scrollTo(0, 30);
scroll_view.scrollBy(0, 30);
}
break;
case R.id.btn_up: {
//向上滑动
// scroll_view.scrollTo(0, -30);
scroll_view.scrollBy(0, -30);
}
break;
}
}
}