Android的 - 的LinearLayout水平,带包装的孩子 [英] Android - LinearLayout Horizontal with wrapping children
本文介绍了Android的 - 的LinearLayout水平,带包装的孩子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个属性,为Android的LinearLayout中设置将使其能够正确地包裹子控件?
Is there a property to set for Android's LinearLayout that will enable it to properly wrap child controls?
意义 - 我有孩子的多变数量,并想水平奠定了他们这样的:
Meaning - I have changeable number of children and would like to lay out them horizontally like:
Example: Control1, Control2, Control3, ...
我这样做,通过设置:
I do that by setting:
ll.setOrientation(LinearLayout.HORIZONTAL);
foreach (Child c in children)
ll.addView(c);
不过,如果我有大量的儿童,最后一个得到,而不是去下一行切断。
However, if I have large number of children, last one gets cuts off, instead of going to next line.
任何想法,这可怎么固定?
Any idea how this can be fixed?
推荐答案
对于任何人谁需要这种行为:
For anyone who needs this kind of behaviour:
private void populateLinks(LinearLayout ll, ArrayList collection, String header) {
Display display = getWindowManager().getDefaultDisplay();
int maxWidth = display.getWidth() - 10;
if (collection.size() > 0) {
LinearLayout llAlso = new LinearLayout(this);
llAlso.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
llAlso.setOrientation(LinearLayout.HORIZONTAL);
TextView txtSample = new TextView(this);
txtSample.setText(header);
llAlso.addView(txtSample);
txtSample.measure(0, 0);
int widthSoFar = txtSample.getMeasuredWidth();
for (Sample samItem : collection) {
TextView txtSamItem = new TextView(this, null,
android.R.attr.textColorLink);
txtSamItem.setText(samItem.Sample);
txtSamItem.setPadding(10, 0, 0, 0);
txtSamItem.setTag(samItem);
txtSamItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextView self = (TextView) v;
Sample ds = (Sample) self.getTag();
Intent myIntent = new Intent();
myIntent.putExtra("link_info", ds.Sample);
setResult("link_clicked", myIntent);
finish();
}
});
txtSamItem.measure(0, 0);
widthSoFar += txtSamItem.getMeasuredWidth();
if (widthSoFar >= maxWidth) {
ll.addView(llAlso);
llAlso = new LinearLayout(this);
llAlso.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
llAlso.setOrientation(LinearLayout.HORIZONTAL);
llAlso.addView(txtSamItem);
widthSoFar = txtSamItem.getMeasuredWidth();
} else {
llAlso.addView(txtSamItem);
}
}
ll.addView(llAlso);
}
}
这篇关于Android的 - 的LinearLayout水平,带包装的孩子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文