問題:
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;
}
}