android多行标签热点示例
android多行标签热点示例
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:packagecom.test.mytest.widget;importjava.util.List;importandr...

复制代码 代码如下:

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;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类