均匀地在整个线性布局中水平分布文本并包装内容(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); } }更多推荐
发布评论