关于Scroview的知识点总结

关于Scroview的知识点总结

学习Android好久,以前习惯将每一个模块的知识点全部用一个word文档来进行归纳整理,这样做的好处有很多,但是有一点,这些word文档容易丢,导致之前做的工作变为徒劳,从现在开始要习惯用技术博客来总结自己的学习,慢慢积累。

-ScrollView 内部只能包含一个控件
-ScrollView与内部控件的滑动冲突


ScrollView 内部只能包含一个控件

ScrollView,通过官方文档的继承关系可以看出,它继承自FrameLayout,所以它是一种特殊类型的FrameLayout,因为它可以使用用户滚动显示一个占据的空间大于物理显示的视图列表。值得注意的是,ScrollView只能包含一个子视图或视图组,在实际项目中,通常包含的是一个垂直的LinearLayout。

ScrollView与内部控件的滑动冲突

  值得注意的是,ScrollView不能和ListView一起使用,因为ListView已经对垂直方向的滚动做了处理,它会迫使如果ListView的内容大于物理视图的内容的时候,强制垂直滚动的效果,所以这里使用ScrollView和ListView混合使用是没有意义的,同理GridView

解决办法

重写GridView,让其失去滑动的特性:
代码如下:

“` python
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.GridView;

public class MenuGridView extends GridView {

public MenuGridView(Context context) {  
    super(context);  
}  

public MenuGridView(Context context, AttributeSet attrs) {  
    super(context, attrs);  
}  

public MenuGridView(Context context, AttributeSet attrs, int defStyle) {  
    super(context, attrs, defStyle);  
}  

@Override  
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,        
            MeasureSpec.AT_MOST);  
    super.onMeasure(widthMeasureSpec, expandSpec);  
}  

@Override  
public boolean dispatchTouchEvent(MotionEvent ev) {  
    if(ev.getAction() == MotionEvent.ACTION_MOVE){     
        return true;   
    }   
    return super.dispatchTouchEvent(ev);  
}  

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值