主要知識點(diǎn):scrollTo是絕對滾動(以view的內(nèi)容的中心為原點(diǎn),如果x為負(fù)值,則向右滾,y為負(fù)值向下滾),scrollBy是相對滾動,他們的相同點(diǎn)就是滾動的都是view中的內(nèi)容,而不是view本身,view本身的getX,getY方法得到的值是不會變的,注意現(xiàn)在版本中scrollTo和scrollBy中的值不允許是 負(fù)值,可以通過如下方法達(dá)到負(fù)值的效果,在dimens.xml文件中新建尺寸
<dimen name="fushu">-10px</dimen>
在java文件中這樣調(diào)用
button0.scrollBy(0, getResources().getDimensionPixelSize(R.dimen.fushu));
再來一張圖片,更好的理解x,y取值所對應(yīng)的滾動方向

代碼如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_alignParentBottom="true"
android:id="@+id/lin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_weight="1"
android:text="scrollTo(10,0)"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"/>
<Button
android:layout_weight="1"
android:text="scrollBy(10,0)"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2"/>
<Button
android:layout_weight="1"
android:text="scrollTo(0,10)"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3"/>
<Button
android:layout_weight="1"
android:text="scrollBy(0,10)"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4"/>
<Button
android:layout_weight="1"
android:text="scrollBy(0,-10)"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button5"/>
</LinearLayout>
<Button
android:layout_above="@id/lin"
android:background="@color/colorAccent"
android:text="button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/button0"/>
</RelativeLayout>
public class CeShi extends BaseActivity {
@BindView(R.id.button0)
Button button0;
@BindView(R.id.button)
Button button;
@BindView(R.id.button2)
Button button1;
@BindView(R.id.button3)
Button button2;
@BindView(R.id.button4)
Button button3;
@BindView(R.id.button5)
Button button4;
@Override
public int getView() {
return R.layout.ceshi;
}
@Override
public void initData() {
ButterKnife.bind(this);
}
@OnClick(value = R.id.button)
public void danJia(){
button0.scrollTo(10,0);
Log.d("CeShi", button0.getX() + "," + button0.getY());//注意這里getX和getY獲取到的值永遠(yuǎn)都不會變,
//因?yàn)閟crollTo和scrollBy移動的是view中內(nèi)容的位置,而不是view的位置
}
@OnClick(value = R.id.button2)
public void danJia1(){
button0.scrollBy(10,0);
}
@OnClick(value = R.id.button3)
public void danJia2(){
button0.scrollTo(0,10);
}
@OnClick(value = R.id.button4)
public void danJia3(){
button0.scrollBy(0,10);
}
@OnClick(value = R.id.button5)
public void danJia4(){
button0.scrollBy(0, getResources().getDimensionPixelSize(R.dimen.fushu));
}
}
參考文章:
https://blog.csdn.net/wuchuang127/article/details/39472493