如何设置Android视图的动态大小?

时间:2014-04-04 12:51:37

标签: android json android-layout

我正在尝试设置最小尺寸,但仍然有一个视图完全接管。我的正常视图如下所示: enter image description here

这两个值来自服务器。但如果"你好"的大小更改为更长的东西,然后数字字符串消失。

enter image description here

我的代码如下所示:

if (jsonDataViewType.get(i).toString().equals("editBox")) {
                editText = new EditText(context);
                editText.setMinLines(1);
                editText.setMinimumWidth(10);
                linearLayoutHorizontal.addView(editText);
                editText.setText(jsonDataValue.get(i));
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
//              RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                params.weight = 1.0f;
                editText.setGravity(Gravity.CENTER_HORIZONTAL);
                editText.setLayoutParams(params);
            }
            else if(jsonDataViewType.get(i).toString().equals("button")) {
                helloButton = new Button(context);
//              helloButton.setMinLines(1);
                linearLayoutHorizontal.addView(helloButton);
                helloButton.setText(jsonDataValue.get(i));
                // testing
//              helloButton.setText("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelllllllllllllllllllllllllllooooooooooo");
            }

我正在设置minLines和minWidth,但是你可以看到它仍然无效。

2 个答案:

答案 0 :(得分:0)

所以你的问题是设置setMinLines(1)是一个下限设置意味着至少使这一行变长。如果你想控制显示的数量,你需要setMaxLines(1);,然后相同的宽度设置setMinWidth(10)意味着至少让它宽10,所以setMaxWidth(10)

然后你可能想考虑将ellipsize添加到按钮文本中,如果你想要它显示有更多文本但是它被截断了。

<强>更新 如果你想让他们坐在一起:

// Linear Layout has weight sum of 3
linearLayoutHorizontal.setWeightSum(3.0f);

// Lets EditText take up 2/3 of view
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 2.0f);

editText.setLayoutParams(params);


// Button gets the other 1/3
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1.0f);

helloButton.setLayoutParams(params2);

答案 1 :(得分:0)

尝试为layout_width=0按钮设置EditView and。然后将layout_weight设置为0.8和0.2 因此,两个视图将填补父母的宽度。现在你的EditView不在屏幕左侧。

相关问题