解决android的问题

    xiaoxiao2021-03-25  153

              最近项目中发现一个scrollview的小问题,当scrollview里面子控件高端变化后,scrollview滑动,显示底部。这样用户体验就不是太好。

            当遇到这个问题的时候,我想记录下原始的位置,然后当子view的高度变化的时候,让他滑到原来的位置就可以了。于是我复写Scollview,想要获得滑动的位置:

            

    public class ObserveScrollView extends ScrollView { private ScrollListener mListener; public static interface ScrollListener { public void scrollOritention(int l, int t, int oldl, int oldt); } public ObserveScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public ObserveScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public ObserveScrollView(Context context) { super(context); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (mListener != null) mListener.scrollOritention(l, t, oldl, oldt); } public void setScrollListener(ScrollListener l) { this.mListener = l; } }结果发现很复杂,能不能实现都是问题,于是重新找资料发现一个很好的解决方案:

    ScrollView下对应的LinearLayout中加入

    Android:focusable="true" android:focusableInTouchMode="true"

    将焦点给LinearLayout就不会因为内部控件的改变而导致ScrollView的滚动

    问题就这么简单的解决了。。。。。。。

    转载请注明原文地址: https://ju.6miu.com/read-806.html

    最新回复(0)