天天看點

解決ScrollView嵌套ListView進入界面不在頂部的問題

問題:      
ScrollView嵌套ListView,為了使ListView全部顯示,設定了ListView的高度,進入界面後就不在頂部了,而是在
ListView的頂部。在網上找了幾種方法,或者設定的不對或者不可行,都沒有成功。最後自己重寫ListView的擷取      
焦點方法解決了。      
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.ListView;

/**
 * Created by gly on 2016/11/24.
 */
public class ShowAllListView extends ListView{

    private boolean focus;

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

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

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

    /**
     * 讓ListView全部顯示
     */
    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int expandSpec = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }

    /**
     * 請求獲得焦點
     */
    @Override
    public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
        return focus?super.requestFocus(direction, previouslyFocusedRect):false;
    }

    /**
     * 設定ListView是否獲得焦點
     */
    public void setFocus(boolean focus){
        this.focus = focus;
    }
}