均匀地在整个线性布局中水平分布文本并包装内容(Evenly distribute textviews across linear layout horizontally and wrap conten

编程入门 行业动态 更新时间:2024-10-25 13:15:36
均匀地在整个线性布局中水平分布文本并包装内容(Evenly distribute textviews across linear layout horizontally and wrap content)

我想以编程方式在线性布局内添加一些textviews。 我希望这些textviews在线性布局的宽度上均匀分布,并且我希望textviews包装其内容。

我创建了这样的textviews,但他们不包装他们的内容。

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);

I want to programmatically add some textviews inside a linear layout. I want these textviews to evenly distribute across the width of the linear layout and i want the textviews to wrap their content.

I create the textviews like that, but they dont wrap their content.

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);

最满意答案

试试而不是

LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);

使用零作为宽度:

LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);

希望能帮助到你

Fixed it by assigning weight to 1 to all TextViews except the last one.

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); } }

更多推荐

本文发布于:2023-07-30 01:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1321387.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线性   均匀   布局   文本   水平

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!