首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >均匀地将文本视图横向地分布在线性布局中,并包装内容。

均匀地将文本视图横向地分布在线性布局中,并包装内容。
EN

Stack Overflow用户
提问于 2017-02-15 12:25:13
回答 5查看 1K关注 0票数 2

我想以编程的方式在线性布局中添加一些文本视图。我希望这些文本视图能够均匀地分布在线性布局的宽度上,并且希望文本视图能够包装它们的内容。

我创建这样的文本视图,但它们没有包装它们的内容。

代码语言:javascript
复制
    LinearLayout linearLayout = new LinearLayout(mContext);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.BOTTOM;
    linearLayout.setOrientation(LinearLayout.HORIZONTAL);

    params.setMargins(40, 0, 0, 0);
    linearLayout.setLayoutParams(params);
   // linearLayout.setGravity(Gravity.BOTTOM);

    linearLayout.setOrientation(LinearLayout.HORIZONTAL);
    for(String label: labels) {
        TextView textView = new TextView(mContext);
        textView.setText(label.trim());
        textView.setTextSize(13);
        textView.setBackgroundColor(Color.GREEN);
        textView.setTextColor(R.color.labels_color);
        LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
        mlp.setMargins(0,0,20,0);

        textView.setLayoutParams(mlp);
        linearLayout.addView(textView);
    }
    chartWrapper.addView(linearLayout);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-05-16 09:03:10

修正了把权重分配给所有的TextViews,除了最后一个。

代码语言:javascript
复制
    public void drawLabels(List<String> labelsValues, ViewGroup container) {


    for (int i = 0; i < labelsValues.size(); i++) {
        String label = labelsValues.get(i);
        TextView textView = new TextView(mContext);
        textView.setText(label.trim());

        if (i == labelsValues.size() - 1) {
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            textView.setLayoutParams(params);
        } else {
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
            textView.setLayoutParams(params);
        }
        container.addView(textView);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-02-15 12:29:53

您应该使用加权和LinearLayout来均匀地分配项目,而且据我所见,您只使用了权重。如果没有适当的权重和,线性布局将不知道如何分配。

如果这不起作用,试着将宽度设置为0,我认为这是对体重正常工作的要求。但是您希望文本视图具有wrap_content,所以您可能应该将文本视图放在布局中,并将布局设置为0宽度,这样您就可以生成文本视图wrap_content。

票数 0
EN

Stack Overflow用户

发布于 2017-02-15 12:38:16

试着而不是

代码语言:javascript
复制
LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);

使用零作为宽度:

代码语言:javascript
复制
LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42249362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档