很多时候我们,我们会用到动态标签,而安卓并未提供一个直接方法,可以让动态标签换行,经过参照网上代码,做出以下效果。
java代码
int size = testName.length; // 添加Button的个数
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // 每行的水平LinearLayout
layoutParams.setMargins(10, 3, 10, 3);
ArrayList<Button> childBtns = new ArrayList<Button>();
int totoalBtns = 0;
for (int i = 0; i < size; i++) {
String item = testName[i];
LinearLayout.LayoutParams itemParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
int length = item.length();
if (length < 4) { // 根据字数来判断按钮的空间长度, 少于4个当一个按钮
itemParams.weight = 1;
totoalBtns++;
} else if (length < 8) { // <8个两个按钮空间
itemParams.weight = 2;
totoalBtns += 3;
} else if (length < 12) {
itemParams.weight = 3;
totoalBtns += 4;
}else{
itemParams.weight = 4;
totoalBtns += 5;
}
itemParams.width = 0;
itemParams.setMargins(5, 15, 5, 15);
Button childBtn = (Button) LayoutInflater.from(this).inflate(R.layout.item_button, null);
childBtn.setText(item);
final int j=i;
childBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {}
});
childBtn.setTag(item);
childBtn.setLayoutParams(itemParams);
childBtns.add(childBtn);
if (totoalBtns >= 5) {
LinearLayout horizLL = new LinearLayout(this);
horizLL.setOrientation(LinearLayout.HORIZONTAL);
horizLL.setLayoutParams(layoutParams);
for (Button addBtn : childBtns) {
horizLL.addView(addBtn);
}
parentLL.addView(horizLL);
childBtns.clear();
totoalBtns = 0;
}
}
//最后一行添加一下
if (!childBtns.isEmpty()) {
LinearLayout horizLL = new LinearLayout(this);
horizLL.setOrientation(LinearLayout.HORIZONTAL);
horizLL.setLayoutParams(layoutParams);
for (Button addBtn : childBtns) {
horizLL.addView(addBtn);
}
parentLL.addView(horizLL);
childBtns.clear();
totoalBtns = 0;
}
xml文件
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/contentviewlt"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
暂时没有整理成demo,如需demo,请留言。