咱們在用ScrollView嵌套ListView或者GridView的時候會遇到兩個問題,一個問題是ListView高度不正常,另一個問題是ListView沒法滑動。由於這幾個控件太經常使用了。咱們來看看應該怎麼解決呢?在解決這個問題以前,咱們先來解決一個小問題,就是在我項目中使用了ListView來填充數據以後,ListView直接跳轉到了底部,這裏記錄一下解決方法:android
ScrollView 嵌套listview時,當listview自動加載時,會自動滑動到scrollview到底部:
解決方法:在listView的父層加上 android:descendantFocusability=」blocksDescendants」;便可,每次加載都會在scrollview頂部ide
至於ListView高度的設置,我在前面的一篇博文中已經講過了,這裏就不在重複,沒看過的童鞋這裏給出連接:解決ListView顯示不全、滑動衝突問題.net
下面咱們來看看若是是ListView在ScrollView中時的處理:blog
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;事件
/**
* 可滾動的ListView,這裏是由於這個ListView被包裹在一個ScrollView中才須要設置縱向拉伸
*/get
public class ScrollListView extends ListView {
public ScrollListView(Context context) {
super(context);
}it
public ScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}class
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, height);
}
}import
下面咱們來看看若是是GridView在ScrollView中時的處理:List
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* 重寫網格View,設置高度
* 可滾動的GridView,這裏是由於這個GridView被包裹在一個ScrollView中才須要設置縱向拉伸
*/
public class ScrollGridView extends GridView {
public ScrollGridView(Context context) {
super(context);
}
public ScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, height);
}
}
ScrollView嵌套ListView時,通常咱們有兩種需求:
第一種是ListVIew徹底伸展並跟隨ScrollView一塊兒滑動,那隻要按照上面的解決了伸展的問題, 就實現這種效果了,由於ScrollView默認是攔截ListView的滑動事件的。
第二種是ScrollView不攔截滑動事件,當咱們在ListView區域滑動時,由ListView處理滑動事件,只有在ListView已到達頂部還繼續向上滑或者ListView已到達底部還繼續向下滑時才從新攔截滑動事件。而當咱們在非ListView區域滑動時,則直接由ScrollView處理滑動事件,那麼咱們看看怎麼實現這種效果。這個問題點擊下面連接查看。
https://blog.csdn.net/u010261933/article/details/54409361
轉載自: https://blog.csdn.net/u014727709/article/details/80217537