- package com.test.mytest.widget;
- import java.util.List;
- import android.content.Context;
- import android.os.Handler;
- import android.util.AttributeSet;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- public class MutipleLabelLayout extends LinearLayout {
- public MutipleLabelLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public MutipleLabelLayout(Context context) {
- super(context);
- }
- public MutipleLabelLayout(Context context, List<String> list) {
- super(context);
- mList = list;
- mContext = context;
- }
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- init();
- }
- }, 500);
- }
- private void init() {
- this.setOrientation(LinearLayout.VERTICAL);
- LinearLayout row = new LinearLayout(mContext);
- row.setOrientation(LinearLayout.HORIZONTAL);
- this.addView(row);
- int rowWidth = this.getMeasuredWidth();
- int viewSumWidth = 0;
- for (String label : mList) {
- TextView labelView = new TextView(mContext);
- labelView.setText(label);
- labelView.setPadding(10, 0, 10, 0);
- labelView.setLayoutParams(new LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- row.addView(labelView);
- labelView.measure(0, 0);
- viewSumWidth += labelView.getMeasuredWidth();
- if (viewSumWidth > rowWidth) {
- row.removeView(labelView);
- row = new LinearLayout(mContext);
- row.setOrientation(LinearLayout.HORIZONTAL);
- this.addView(row);
- row.addView(labelView);
- labelView.measure(0, 0);
- viewSumWidth = labelView.getMeasuredWidth();
- }
- // System.out.println("viewSumWidth: " + viewSumWidth);
- // System.out.println("rowWidth: " + rowWidth);
- }
- }
- private List<String> mList;
- private Context mContext;
- }
- //该片段来自于http://www.codesnippet.cn/detail/2306201512907.html
来源: http://www.codesnippet.cn/detail/2306201512907.html