android 如何去掉滚动侧边的那个线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 如何去掉滚动侧边的那个线相关的知识,希望对你有一定的参考价值。

1. 添加onIntercepteEvent, 只有当手指在右侧视图上并且移动超过一定距离,满足这连个条件拦截交由ViewGoup执行滚动

[java] view plaincopyprint?
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)

final int actioin = ev.getAction();
final int x = (int) ev.getX();

switch (actioin)
case MotionEvent.ACTION_DOWN:
mInterceptMotionX = x;
break;

case MotionEvent.ACTION_MOVE:
final int deltaX = x - mInterceptMotionX;
final int distance = Math.abs(deltaX);
// 点击区域必须在右侧视图,因为仅右侧视图可移动
// 横向移动超过一定距离,可以自己根据需求改动
if ( canSliding(ev) && distance > mTouchSlop * 2)

// 置为初始值
mLastX = x;
if (mScrollRunnable != null)
mScrollRunnable.endScroll();
mScrollRunnable = null;


// 拦截Touch Event 交由当前ViewGruop onTouchEvent处理
return true;


break;

case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mInterceptMotionX = 0;
break;


return false;


2. 上面用到的判断是否是右侧视图改变canSliding方法内部实现改变,使用ViewGroup.dispatchTouchEvent中判断方式。

[java] view plaincopyprint?
/**
* 当前手指点击位置是否在右侧视图区域内
*
* @param event
* @return true 可以滚动
*/
private boolean canSliding(MotionEvent event)

final int scrolledXInt = (int) (event.getX() + getScrollX());
final int scrolledYInt = (int) (event.getY() + getScrollY());

Rect frame = new Rect();
mRightView.getHitRect(frame);
if (frame.contains(scrolledXInt, scrolledYInt))
return true;


return false;


3. 改变onTochEvent,ACTION_DOWN的处理放到onInterceptTouchEvent中了,而且ViewGroup也不需要拦截DOWN事件,所以DOWN事件从onTochEvent删除。

[java] view plaincopyprint?
@Override
public boolean onTouchEvent(MotionEvent event)

final int x = (int) event.getX();

switch (event.getAction())
case MotionEvent.ACTION_MOVE:

scrollIfNeed(x);
return true;

case MotionEvent.ACTION_UP:

autoScrollIfNeed(x);
break;


return false;


4. scrollIfNeed方法改变,右侧视图盖住左侧视图时,隐藏左侧视图,目的是为了此时左侧视图不接收Touch Event

[java] view plaincopyprint?
private void scrollIfNeed(final int x)
// 计算与上次的偏移量
int deltaX = x - mLastX;

// 减少移动次数
if (x != mLastX)
// 显示
if (mLeftView.getVisibility() != View.VISIBLE)
mLeftView.setVisibility(View.VISIBLE);


int l = mRightView.getLeft();
int t = mRightView.getTop();
int b = mRightView.getBottom();

// 右侧视图的滑动区域,只能在左侧视图范围内滑动
int rightViewLeft = Math.max(mLeftView.getLeft(), l + deltaX);
rightViewLeft = Math.min(mLeftView.getRight(), rightViewLeft);

// 控制随手指滑动
mRightView.layout(rightViewLeft, t, rightViewLeft + mRightView.getWidth(), b);


// 滑动到最左侧
if (mRightView.getLeft() == mLeftView.getLeft())
mLeftView.setVisibility(View.INVISIBLE);


// 记录当前值供下次计算
mLastX = x;
参考技术A 1、在默认情况下,HorizontalScrollView控件里面的内容在滚动的情况下,会出现滚动条,为了去掉滚动条,只需要在<HorizontalScrollView/>里面加android:scrollbars="none"。
2、如果想实现在代码里面,点击左(右)按钮【btnLeft(btnRight)】,滚动条里面的内容会向左向右滚动【horizontalScrollViewMM】。代码如下:
滚动条向左滚动:
btnLeft.setOnClickListener( new View.onClickListener()
horizontalScrollViewMM.arrowScroll(View.FOCUS_LEFT);
);
滚动条向右滚动:
btnRight.setOnClickListener( new View.onClickListener()
horizontalScrollViewMM.arrowScroll(View.FOCUS_RIGHT);
);
参考技术B 在XML里加上 android:scrollbars="none

pycharm 去掉波浪线 其实我是知道答案,但是找这个找了很久 ,让大家看到不再烦恼

其实那个烦人的波浪线也不是人家瞎搞的
是规范提示,虽然不会报错但是会提示你这个不合规范
解决办法:Ctrl+Shift+F (如果你快捷键设为Eclipse的话) 一键格式化就能解决大多数问题
还有的话 做做尝试 比如掉return后面的括号呀 之类的
瞬间可以简洁明了
网上肯定有说关闭拼写提示的 那个也会把错误提示也关掉 对于新手自然是不友好的

参考技术A 没事别掺六十道少几道行
建议不要想太多
想多了累这样的提问是没有任何意义的
参考技术B 谢谢你了朋友!你是一个大好人,分享是一种美德。真的! 再次谢谢

以上是关于android 如何去掉滚动侧边的那个线的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何制作可滚动的约束布局?

如何去掉div裏面的滚动条但是还可以滚动~急 在线等~

如何让wordpress首页完全去掉侧边栏

android listview每条记录下都有一条分隔线,如何去掉分割线

滚动时如何让侧边栏对齐到顶部?

UIPickerView中间选中那个cell分割线如何去除