Android 在相对视图内以编程方式在布局下方布局
当一个视图位于另一个视图之下时,我试图通过编程将两个视图添加为根Android 在相对视图内以编程方式在布局下方布局,android,android-recyclerview,android-relativelayout,Android,Android Recyclerview,Android Relativelayout,当一个视图位于另一个视图之下时,我试图通过编程将两个视图添加为根RelativeLayout的子视图 下面是根视图(它也位于另一个CoordinatorLayout中,但我不认为这是相关的): 结果是:底部视图不可见 我尝试的是: 将第一个RecyclerView的高度更改为WRAP\u CONTENT(认为它可能会填满所有空间并隐藏底部布局),但没有效果 不要将LayoutParams设置为底部视图,而是: container.addView(bottomView, lp); 但它也不起作
RelativeLayout
的子视图
下面是根视图(它也位于另一个CoordinatorLayout
中,但我不认为这是相关的):
结果是:底部视图不可见
我尝试的是:
RecyclerView
的高度更改为WRAP\u CONTENT
(认为它可能会填满所有空间并隐藏底部布局),但没有效果李>
LayoutParams
设置为底部视图,而是:
container.addView(bottomView, lp);
LinearLayout
而不是RelativeLayout
容器,也可以使用相同的行为李>
我已经不知道是什么导致了这个问题,通过研究类似的问题,没有任何效果。你知道我做错了什么吗?你的第一个视图是RecyclerView,它是一个可滚动的视图。将“高度包裹”内容设置为RecyclerView/ListView并不重要。在所有情况下,它都会填满整个屏幕,除非你为RecyclerView设置了一个特定的高度,明显小于设备的高度。此时将显示RecyclerView下面的第二个视图。以下是您可以尝试的内容:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, HEIGHT_OF_VIEW);
recyclerView.setLayoutParams(params);
您的第一个视图是RecyclerView,它是一个可滚动的视图。将“高度包裹”内容设置为RecyclerView/ListView并不重要。在所有情况下,它都会填满整个屏幕,除非你为RecyclerView设置了一个特定的高度,明显小于设备的高度。此时将显示RecyclerView下面的第二个视图。以下是您可以尝试的内容:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, HEIGHT_OF_VIEW);
recyclerView.setLayoutParams(params);
线性布局方法应该有效 记住:
1) 容器线性布局应具有布局\高度匹配\父级
2) RecyclerView的布局高度应为0,布局重量应为1 如果您想保留RelativeLayout方法,请尝试:
1) 具有规则相对性的底部布局yout.ALIGN_PARENT_BOTTOM
2) 具有上述规则RelativeLayout.com的RecyclerView 示例2方法:
RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container);
RelativeLayout bottomLayout = new RelativeLayout(this);
bottomLayout.setId(R.id.bottom_id);
RelativeLayout.LayoutParams bottomLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
bottomLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomLayout.setLayoutParams(bottomLayoutParams);
bottomLayout.setBackgroundColor(Color.RED);
TextView bottomTextView = new TextView(this);
bottomTextView.setText("Bottom Layout");
bottomLayout.addView(bottomTextView);
containerLayout.addView(bottomLayout);
RecyclerView recyclerView = new RecyclerView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ABOVE, R.id.bottom_id);
recyclerView.setLayoutParams(params);
recyclerView.setBackgroundColor(Color.BLUE);
containerLayout.addView(recyclerView);
线性布局方法应该有效 记住:
1) 容器线性布局应具有布局\高度匹配\父级
2) RecyclerView的布局高度应为0,布局重量应为1 如果您想保留RelativeLayout方法,请尝试:
1) 具有规则相对性的底部布局yout.ALIGN_PARENT_BOTTOM
2) 具有上述规则RelativeLayout.com的RecyclerView 示例2方法:
RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container);
RelativeLayout bottomLayout = new RelativeLayout(this);
bottomLayout.setId(R.id.bottom_id);
RelativeLayout.LayoutParams bottomLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
bottomLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomLayout.setLayoutParams(bottomLayoutParams);
bottomLayout.setBackgroundColor(Color.RED);
TextView bottomTextView = new TextView(this);
bottomTextView.setText("Bottom Layout");
bottomLayout.addView(bottomTextView);
containerLayout.addView(bottomLayout);
RecyclerView recyclerView = new RecyclerView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ABOVE, R.id.bottom_id);
recyclerView.setLayoutParams(params);
recyclerView.setBackgroundColor(Color.BLUE);
containerLayout.addView(recyclerView);
为什么所有的询问者都在使用setLayoutParams,而你有一个对addView的调用,它应该在那里将layoutparams作为2º参数传递……你知道,当一件事不起作用时,你就在尝试另一件事。我不确定有什么不同(我假设有),我提到我尝试了所有的方法。在你去问其他人之前,你不尝试你所知道的一切吗?为什么所有的询问者都在使用setLayoutParams,而你有权调用addView,在那里它应该将layoutparams作为2º参数传递…你知道,当一件事不起作用时,你在尝试另一件事。我不确定有什么不同(我假设有),我提到我尝试了所有的方法。在你去问别人之前,你不想尝试你所知道的一切吗?我不知道前面的recycler视图的大小,因为只有在运行时适配器项才会被实例化。除非我通过编程提前设置适配器项的大小。。。但这感觉不对,我不知道前面的recycler视图的大小,因为只有在运行时才实例化适配器项。除非我通过编程提前设置适配器项的大小。。。但第一种方法的结果是只有底部视图可见。第二种方法会导致视图可见和重叠…我添加了一个你问我的RelativeLayout方法的示例,我猜这不起作用,因为我在一个坐标布局中(基本上我有一个灵活的空间,上面有一个图像。尝试在图像上添加额外的文本,但不起作用)第一个进近结果是只有底部视图可见。第二种方法会导致视图可见和重叠…我添加了一个你问我的RelativeLayout方法的示例,我猜这不起作用,因为我在一个坐标布局中(基本上我有一个灵活的空间,上面有一个图像。尝试在图像上添加额外的文本,但不起作用)
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, HEIGHT_OF_VIEW);
recyclerView.setLayoutParams(params);
RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container);
RelativeLayout bottomLayout = new RelativeLayout(this);
bottomLayout.setId(R.id.bottom_id);
RelativeLayout.LayoutParams bottomLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
bottomLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomLayout.setLayoutParams(bottomLayoutParams);
bottomLayout.setBackgroundColor(Color.RED);
TextView bottomTextView = new TextView(this);
bottomTextView.setText("Bottom Layout");
bottomLayout.addView(bottomTextView);
containerLayout.addView(bottomLayout);
RecyclerView recyclerView = new RecyclerView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ABOVE, R.id.bottom_id);
recyclerView.setLayoutParams(params);
recyclerView.setBackgroundColor(Color.BLUE);
containerLayout.addView(recyclerView);