Android LinearLayout实现多行多列

半夜了,直接上代码,注释都在代码里面,其实吧,这个很简单。。。。。

1.MainActivity

package com.example.diaplaycolumnslinearlayout;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

/**
 * LinearLayout实现多行多列显示
 * @author Administrator
 *
 */
public class MainActivity extends Activity {
	private LinearLayout mColumnsLinear;
	private int column = 4;
	private LayoutInflater inflater;
	private int index = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//初始化组件
		mColumnsLinear = (LinearLayout) findViewById(R.id.columns_linear);
		//获取LayoutInflater对象
		inflater = LayoutInflater.from(this);
		//生成多行多列的线性布局,
		displayColumns(13);
	}

	/**
	 * 生成多行多列的线性布局
	 * @param displayNumber 需要生成的个数,这里是需要生成的TextView的总个数
	 */
	private void displayColumns(int displayNumber) {
		//判断
		if (displayNumber <= 0) {
			return;
		}
		//判断是否被每行显示的列数整除
		boolean boo = false;
		//获取列数
		int rows = displayNumber / column;
		//判断,得到是否被每行显示的列数整除
		if (displayNumber % column == 0) {
			boo = true;
		} else {
			boo = false;
		}
		
		if (boo) {
			//如果能够被整除
			for (int i = 0; i < rows; i++) {
				createLinear(column);
			}
			return;
		}else{
			//如果不能够被整除
			for (int i = 0; i < rows; i++) {
				createLinear(column);
			}
			//用%,得到最后剩下的,不足一行的
			rows = displayNumber % column;
			//创建布局一行的布局
			createLinear(rows);
		}

	}

	/**
	 * 创建每一行显示的线性布局 
	 * @param i 一行显示的textview的个数
	 */
	private void createLinear(int i) {
		//创建线性布局
		LinearLayout layout = new LinearLayout(this);
		//设置LayoutParams
		LinearLayout.LayoutParams lp = new LayoutParams(
				LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
		//设置为水平布局
		layout.setOrientation(LinearLayout.HORIZONTAL);
		//为线性布局这只LayoutParams
		layout.setLayoutParams(lp);
		//循环添加
		for (int j = 0; j < i; j++) {
			//获取需要添加的布局文件
			View view = inflater.inflate(R.layout.item_column, null, false);
			//获取组件
			TextView tv = (TextView) view.findViewById(R.id.text);
			//设值
			tv.setText(++index + "");
			//绑定点击事件
			tv.setOnClickListener(clickListener);
			//添加到创建的线性布局中
			layout.addView(view);
		}
		//添加到显示的父线性布局中
		mColumnsLinear.addView(layout);
	}

	/**
	 * 点击事件
	 */
	private OnClickListener clickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			System.out.println(((TextView)v).getText());
		}
	};

}

2.activity_main.xml主布局文件



    


3.item_column.xml布局文件



    
    


代码上传完成,这个只是一个简单的例子

想实现跟难一点的,但是没有思绪。。。。

希望如果有更好的实现方法,希望留言。。。。谢谢

你可能感兴趣的:(Android)