您好,登錄后才能下訂單哦!
在Android中,要鎖定滑動(dòng)控件的滑動(dòng)方向,可以使用android:scrollbars
屬性和自定義滑動(dòng)監(jiān)聽器
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<!-- 在這里添加你的子視圖 -->
</ScrollView>
這里我們設(shè)置了垂直滾動(dòng)條(android:scrollbars="vertical"
),這將鎖定水平滾動(dòng)方向。如果你想鎖定垂直滾動(dòng)方向,可以設(shè)置為android:scrollbars="horizontal"
。
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;
public class LockedScrollView extends ScrollView {
public LockedScrollView(Context context) {
super(context);
}
public LockedScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LockedScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getPointerCount() > 1) {
return true;
}
int action = ev.getAction();
float x = ev.getX();
float y = ev.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
// 記錄按下時(shí)的位置
setDownX(x);
setDownY(y);
break;
case MotionEvent.ACTION_MOVE:
// 計(jì)算滑動(dòng)距離
float deltaX = x - getDownX();
float deltaY = y - getDownY();
// 判斷滑動(dòng)方向是否與鎖定方向一致
if (Math.abs(deltaX) > Math.abs(deltaY)) {
// 如果是水平滾動(dòng),鎖定垂直滾動(dòng)
return true;
} else {
// 如果是垂直滾動(dòng),鎖定水平滾動(dòng)
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
private float downX;
private float downY;
public float getDownX() {
return downX;
}
public void setDownX(float downX) {
this.downX = downX;
}
public float getDownY() {
return downY;
}
public void setDownY(float downY) {
this.downY = downY;
}
}
LockedScrollView
:<your.package.name.LockedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<!-- 在這里添加你的子視圖 -->
</your.package.name.LockedScrollView>
現(xiàn)在,滑動(dòng)控件的滑動(dòng)方向已經(jīng)被鎖定。如果你想鎖定垂直滾動(dòng)方向,只需在自定義滑動(dòng)監(jiān)聽器中調(diào)整滑動(dòng)方向判斷邏輯即可。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。