由于谷歌已经发布了android的设计支持库,所以可以在不实现自定义代码的情况下完成许多很好的事情。虽然我已经测试了这个库中的自定义视图,但我发现了更糟糕的事情,我不知道这是不是一个bug。
我在github上找到了cheesesquare项目。在activity_detail.xml(布局文件)中,NestedScrollView内部有3个CardViews。如果您删除其中的2个,您可以看到NestedScrollView没有父对象(Match_parent)的完整大小。NestedScrollView被绑定到父视图的底部。http://i.stack.imgur.com/BXl7w.png
当我取下app:layout_behavior="@string/appbar_scrolling_view_behavior"
的时候,NestedScrollView就是他的全部尺寸了。
但是当我移除布局行为时,工具栏并没有折叠。
有什么办法解决这个问题吗?示例布局文件可在以下位置找到:https://github.com/Smove/cheesesquare/blob/stackoverflow/app/src/main/res/layout/activity_detail.xml
您可以从我的github分支stackoverflow
构建cheesesquare
发布于 2020-08-17 00:03:36
使用@natario的答案,如果你为孩子设置一个填充(在我的例子中是LinearLayout),它看起来会更好:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_gravity="fill_vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="?attr/actionBarSize">
<!--Rest of the code-->
或者在Kotlin中,你可以这样做:
coordinator.doOnLayout {
nestedScrollView.minimumHeight = resources.displayMetrics.heightPixels - with(TypedValue().also {theme.resolveAttribute(android.R.attr.actionBarSize, it, true)}) {
TypedValue.complexToDimensionPixelSize(data, resources.displayMetrics)}
}
发布于 2021-04-17 18:38:35
向CollapsingToolbarLayout
添加android:minHeight="?attr/actionBarSize"
发布于 2015-06-13 01:33:43
用RecyclerView替换NestedScrollView修复这个bug设置项计数为1,ViewHolder返回你真实的contentView;
我的代码:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
// 添加分割线
recyclerView.addItemDecoration(new DividerItemDecoration(getApplicationContext()));
recyclerView.setAdapter(new Adapter<ViewHolder>() {
@Override
public int getItemCount() {
return 1;
}
@Override
public void onBindViewHolder(ViewHolder holder, int arg1) {
WebView view = (WebView) holder.itemView;
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("http://www.baidu.com");
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) {
return new ViewHolder(inflater.inflate(R.layout.webview, arg0, false)) {
};
}
});
https://stackoverflow.com/questions/30612310
复制相似问题