TextView没有出现,Android

时间:2015-08-20 00:45:01

标签: android android-layout textview

提前感谢您的帮助。

我正在尝试将一个垂直加权的TextView对象添加到LinearLayout。

//root container
LinearLayout rootContainer = new LinearLayout(activity);
rootContainer.setOrientation(LinearLayout.HORIZONTAL);
rootContainer.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT,1f));
rootContainer.setBackgroundColor(Color.parseColor("#000000"));

//Text View
TextView instructions = new TextView(activity);
instructions.setLayoutParams(new LinearLayout.LayoutParams(0,
            LayoutParams.MATCH_PARENT,.7f));
instructions.setText(survey.instructions);
instructions.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
instructions.setBackgroundColor(Color.RED);
rootContainer.addView(instructions);

当我使用上面的代码时,我得到一个空白屏幕。但是,如果我发表评论

instructions.setLayoutParams(new LinearLayout.LayoutParams(0,
            LayoutParams.MATCH_PARENT,.7f));

出现TextView(虽然不是我想要的尺寸)。

从我看过的所有内容中,这是生成加权TextView的方法(按屏幕大小垂直加权)。我做错了什么?

3 个答案:

答案 0 :(得分:1)

你可以用这个代替你拥有的东西:

instructions.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.7f));

它在app启动时没有显示的原因是因为在java代码中定义视图时,它用像素定义它,所以当你将宽度设置为0时,它肯定是不可见的。这与在xml布局文件中定义它不同。

希望有所帮助。

答案 1 :(得分:0)

代码

instructions.setLayoutParams(new LinearLayout.LayoutParams(0,
        LayoutParams.MATCH_PARENT,.7f));

将文本视图的宽度设置为0意味着不会查看它会尝试使用某些值替换0或者使用LayoutParams.WRAP_CONTENT

答案 2 :(得分:0)

我认为这个问题的公认答案是错误的。 这不起作用的原因是因为LinearLayout设置了vertical方向,而TextView是使用width权重构建的:

instructions.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT,.7f));

应该是:

instructions.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, .7f));

此外,由于TextView是LinearLayout的唯一子项,因此weightSum属性应设置为1以达到70%的比率:

rootContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,             ViewGroup.LayoutParams.MATCH_PARENT));
rootContainer.setWeightSum(1);