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;@Overrideprotected 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);//设置LayoutParamsLinearLayout.LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);//设置为水平布局layout.setOrientation(LinearLayout.HORIZONTAL);//为线性布局这只LayoutParamslayout.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() {@Overridepublic void onClick(View v) {System.out.println(((TextView)v).getText());}};}

2.activity_main.xml主布局文件

    

3.item_column.xml布局文件

<?xml version="1.0" encoding="utf-8"?>        
代码上传完成,这个只是一个简单的例子

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

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