LinearLayout 动态添加子Button,并自动换行
来源:互联网 发布:js将集合转换为数组 编辑:程序博客网 时间:2024/06/05 22:48
转发地址:http://blog.csdn.net/tony2005/article/details/38414967
最近项目了需要如下图的搜索需求,网上找了些资料,要么太复杂,要么不符合要求。后来想了想,想到了一个非常便捷的方案。
在android 5.1上运行效果如图:content_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/contentView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#3DCE3D" android:orientation="vertical"></LinearLayout>button.xml
<?xml version="1.0" encoding="utf-8"?><Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:textColor="#2B2D2C" android:clickable="false" android:singleLine="true" android:paddingTop="8dp" android:paddingBottom="8dp" android:ellipsize="end" android:background="#D5DEE7" android:textSize="18dp" />
MainActivity.class
public class MainActivity extends AppCompatActivity{ private static String[] testName = {"日历","360","三国","消除","播放器", "游戏", "清理大师", "跑酷","壁纸","单机斗地主", "捕鱼达人3","雷电2014(雷霆版)","打车","输入法", "动作","免费单机","手电筒","网游","视频","休闲","漫画", "飞行射击","保卫萝卜","塔防","爸爸去哪儿2","中国象棋","宅女必备","三国", "消除","跑酷","壁纸","单机斗地主","免费单机","手电筒"}; private LinearLayout contentView; private View.OnClickListener btnOnClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); contentView = (LinearLayout) findViewById(R.id.contentView); initView(); } private void initView(){ LinearLayout parentLL = (LinearLayout) contentView; // contentView的布局 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+=2; }else{ itemParams.weight = 3; totoalBtns+=3; } itemParams.width = 0; itemParams.setMargins(5, 5, 5, 5); Button childBtn = (Button) LayoutInflater.from(this).inflate(R.layout.button, null); childBtn.setText(item);// childBtn.setOnClickListener(btnOnClick); 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; } }}
0 2
- LinearLayout 动态添加子Button,并自动换行
- LinearLayout 动态添加子Button,并自动换行
- LinearLayout 动态添加子Button,并自动换行
- Tagview(LinearLayout 动态添加子Button,并自动换行 )
- 后台代码动态添加控件并自动换行
- layout里动态添加控件,并自动换行
- 在LinearLayout里动态添加子布局
- Android LinearLayout 自动换行
- Android LinearLayout 自动换行
- 自动换行LinearLayout
- 在xml中有一个LinearLayout,在fragment中动态加入多个Button,为其赋值并添加监听,然后加入到LinearLayout
- Android动态设置布局,为LinearLayout动态添加子控件
- 动态添加button,并设置其style
- 动态添加Button并包裹内容
- LinearLayout添加子布局
- button自适应宽度 并根据屏幕宽自动换行排列
- Android 自动换行的LinearLayout
- 自动换行的button
- android蓝牙的使用
- 基于Spring的新浪微博第三方登录实现
- SparkContext的初始化(叔篇)——TaskScheduler的启动
- ActionBar的使用
- 获取手机验证码
- LinearLayout 动态添加子Button,并自动换行
- Matlab读入的图像缘何和OpenCv的不一样?
- leetcode-- Lowest Common Ancestor of a Binary Search Tree
- 一键锁屏和清除数据
- oracle 内核参数二
- 图片轮播之无限轮播
- js 定时器、延时和周期
- 析构函数
- 图片轮播之自动轮播