问题:
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;
}
}