我有此代码:
final RelativeLayout headerRl=new RelativeLayout(SpeakersActivity.this);
headerRl.setBackgroundColor(Color.parseColor(almacen.getColor()));
final TextView initial=new TextView(SpeakersActivity.this);
final RelativeLayout.LayoutParams headerParams=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 80);
headerParams.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);
initial.setText(arrayInitials.get(i));
initial.setTextColor(getColor(R.color.white));
initial.setTextSize(16);
initial.setPadding(10,0,0,0);
runOnUiThread(new Runnable() {
@Override
public void run() {
headerRl.addView(initial,headerParams);
ll.addView(headerRl);
}
});
“ ll”是LinearLayout。我将规则添加到RelativeLayout.LayoutParams上,将视图添加到RelativeLayout中,该视图已添加到LinearLayout中。但是我的观点不是垂直居中。我试图将其水平居中,以查看其是否正常工作,但事实并非如此。为什么我的观点不在RL中?如何居中?
谢谢。
答案 0 :(得分:1)
取决于您期望的结果 有两种方法可以解决您的问题。
第一个: 问题出在headerRl中,该标题默认情况下设置为wrap_content,wrap_content 因此,您需要使用match_parent定义其布局参数:
headerRlLayoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
headerRl.setLayoutParams(headerRlLayoutParams)
第一个参数可以是wrap_content,取决于您想要的内容,但是第二个参数应该是match_parent,否则,默认情况下它将是wrap_content,这会将您的视图置于顶部
将headerParams创建为headerParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT...
就是这样。
在此处匹配父对象会使您的视图采用整个父对象的宽度。如果您要这样做,请参见下面的第二个选项
第二个: 如果您希望将视图作为match_parent并采用整个视图,则 您的问题是: 新的RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT 这会使您的文本视图在布局中成为match_parent。而且因为您没有设置视图的重力-文本默认设置为-顶部/开始。
解决方案很简单-设置TextView Gravity(与在XML中设置重力参数相同)-视图将保持为match_parent-占据其父级布局的整个宽度,但文本将垂直居中
initial.setGravity(Gravity.CENTER_VERTICAL);
还有一个小提示-您还可以在开发人员选项中设置“显示布局范围”,以查看布局占用的空间以及视图在布局中的位置。这可能有助于调试和了解到底出了什么问题
答案 1 :(得分:0)
尝试
final RelativeLayout.LayoutParams headerParams=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 80);
/**
* Rule that centers the child vertically with respect to the
* bounds of its RelativeLayout parent.
*/
headerParams.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);
// your textview
initial.setGravity(Gravity.CENTER_VERTICAL);
答案 2 :(得分:0)
launchSettings.json