ScorllView中嵌套listView与Viewpager的焦点问题处理

解决进入该页面直接显示中的listview而不是从页面最顶端开始显示
在setAdapter后调用listview的smoothScrollTo(0,20);

解决listview只能显示一条 需要重写listview
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}

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

public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MyListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2
, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}

viewpager显示不全问题
只能给viewpager设置固定的高度
android:layout_height="500dp"

Viewpager的左右滑动焦点问题及滑动到第二个页面上下无法滑动问题

重写Viewpager
public class SViewPager extends ViewPager {

private boolean canScroll;

public SViewPager(Context context) {
super(context);
canScroll = false;
}

public SViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
canScroll = false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (canScroll) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
}
return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if (canScroll) {
return super.onTouchEvent(event);
}
return false;
}

public void toggleLock() {
canScroll = !canScroll;
}

public void setCanScroll(boolean canScroll) {
this.canScroll = canScroll;
}

public boolean isCanScroll() {
return canScroll;
}

}
在设置adapter之后调用setCanScroll(true);方法

上一篇:[Java][Android][Process] Process 创建+控制+分析 经验浅谈


下一篇:C99标准中的部分新特性