主要知识点:scrollTo是绝对滚动(以view的内容的中心为原点,如果x为负值,则向右滚,y为负值向下滚),scrollBy是相对滚动,他们的相同点就是滚动的都是view中的内容,而不是view本身,view本身的getX,getY方法得到的值是不会变的,注意现在版本中scrollTo和scrollBy中的值不允许是 负值,可以通过如下方法达到负值的效果,在dimens.xml文件中新建尺寸
<dimen name="fushu">-10px</dimen>
在java文件中这样调用
button0.scrollBy(0, getResources().getDimensionPixelSize(R.dimen.fushu));
再来一张图片,更好的理解x,y取值所对应的滚动方向
代码如下
<?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获取到的值永远都不会变,
//因为scrollTo和scrollBy移动的是view中内容的位置,而不是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
网友评论