-
引用资源文件错误,导致运行失败,无法确定错误位置
解决方案:在Android Studio的Terminal控制台输入:gradlew compileDebugSources -
获取webView的高度
public void initView(){
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
setDetailViewHeight();
}
});
/**
* 获取webView的高度
*/
public void setDetailViewHeight() {
ViewTreeObserver viewTreeObserver = webView.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int webHeight = webView.getMeasuredHeight();
if (webHeight != 0) {
webView.getViewTreeObserver().removeOnPreDrawListener(this);
}
return false;
}
});
}
- XRecyclerView上拉加载刷新有3s左右的延迟
注意:出现的问题可能和嵌套在ScrollView布局中有关系,具体原因不太清楚,有清楚的可以评论告知一下。
解决方法:
recyclerView.setHasFixedSize(true);
recyclerView.setNestedScrollingEnabled(false);
- XRecyclerView嵌套不可滑动ListView时,下拉刷新卡顿
转载自:Android 实现ListView不可滚动效果
public class ScrollDisabledListView extends ListView {
private int mPosition;
public ScrollDisabledListView(Context context) {
super(context);
}
public ScrollDisabledListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollDisabledListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK;
if (actionMasked == MotionEvent.ACTION_DOWN) {
// 记录手指按下时的位置
mPosition = pointToPosition((int) ev.getX(), (int) ev.getY());
return super.dispatchTouchEvent(ev);
}
if (actionMasked == MotionEvent.ACTION_MOVE) {
// 最关键的地方,忽略MOVE 事件
// ListView onTouch获取不到MOVE事件所以不会发生滚动处理
return true;
}
// 手指抬起时
if (actionMasked == MotionEvent.ACTION_UP
|| actionMasked == MotionEvent.ACTION_CANCEL) {
// 手指按下与抬起都在同一个视图内,交给父控件处理,这是一个点击事件
if (pointToPosition((int) ev.getX(), (int) ev.getY()) == mPosition) {
super.dispatchTouchEvent(ev);
} else {
// 如果手指已经移出按下时的Item,说明是滚动行为,清理Item pressed状态
setPressed(false);
invalidate();
return true;
}
}
return super.dispatchTouchEvent(ev);
}
}
同时需要在Java代码中为ListView设置默认取消焦点
listView.setFocusable(false);