Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android对话框片段RecyclerView包裹内容,但最大高度基于约束?_Android_Android Recyclerview_Android Constraintlayout_Android Dialogfragment - Fatal编程技术网

Android对话框片段RecyclerView包裹内容,但最大高度基于约束?

Android对话框片段RecyclerView包裹内容,但最大高度基于约束?,android,android-recyclerview,android-constraintlayout,android-dialogfragment,Android,Android Recyclerview,Android Constraintlayout,Android Dialogfragment,所以我正在创建一个对话框片段,允许用户从一些选项中进行选择。我在约束布局中有一个非常简单的布局。顶部的文本视图、回收器视图,然后是底部的两个按钮 问题是,我想让recyclerview包装内容,这样如果没有太多选项,对话框就会缩小。但是,如果有很多选项,我希望它展开,然后开始滚动,这样所有视图都可以在屏幕上看到 我似乎无法摆脱这样一种情况,即它总是很大。或者,如果我只允许包装内容,对话框将变得非常大,底部按钮将丢失 我假设它与某些特定的约束选项有关,但我无法找出它们的组合。有什么想法吗 编辑:我

所以我正在创建一个对话框片段,允许用户从一些选项中进行选择。我在约束布局中有一个非常简单的布局。顶部的文本视图、回收器视图,然后是底部的两个按钮

问题是,我想让recyclerview包装内容,这样如果没有太多选项,对话框就会缩小。但是,如果有很多选项,我希望它展开,然后开始滚动,这样所有视图都可以在屏幕上看到

我似乎无法摆脱这样一种情况,即它总是很大。或者,如果我只允许包装内容,对话框将变得非常大,底部按钮将丢失

我假设它与某些特定的约束选项有关,但我无法找出它们的组合。有什么想法吗

编辑:我知道一个简单的答案是在“回收器”视图上设置最大高度。我希望做同样的事情,但有限制,所以它不是一个固定的硬高度

EDIT2:如果视图模型的高度是固定的,那么约束将很好地与默认的包裹一起工作。我真的不能处理一个固定高度的视图模型,虽然


谢谢

创建一个覆盖onMeasure方法的customRecyclerView

public class CustomRecyclerView extends RecyclerView{

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

    public CustomRecyclerView (Context context) {
        super(context);
    }

    public CustomRecyclerView (Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

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

}
你可以这样称呼回收站

<com.example.yourpackage.CustomRecyclerView>


这里的答案有用吗?()
app:layout\u constrainedHeight=“true”
。创建一个覆盖onMeasure的customrecyclerviewmethod@TylerV嘿,只有当你的取景器有一个固定的高度时,它们才起作用。如果这些是包装内容(我觉得这是大多数视图持有者),那么它的大小就不正确。我的猜测是因为如果它的内容是动态的,它不知道如何确定大小。单独使用动态高度视图保持器会使其始终增长到约束最大值。因此,无法使用现有的RecyclerView来绕过它?似乎是Recyclerviews和DialogFragments之间的差距。好的,我们将采用这种方法。谢谢