LinearLayout代码实现分行
来源:互联网 发布:黑魔棒淘宝 编辑:程序博客网 时间:2024/05/22 08:13
LinearLayout用代码实现分行
很多时候我们的子view个数不确定时,我们需要通过Java代码将子view添加到父view视图中,如果我们期望横向排列,当超出屏幕宽度后自动换行展示,这样的需求怎么实现呢?
效果:
代码实现 :
LinearLayout linearLayout =
new
LinearLayout(
this
);
02
linearLayout.setOrientation(LinearLayout.VERTICAL);
03
LinearLayout.LayoutParams layoutParams =
new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
04
layoutParams.setMargins(
0
,
20
,
0
,
20
);
05
linearLayout.setLayoutParams(layoutParams);
06
07
LinearLayout newlinearLayout =
new
LinearLayout(
this
);
08
newlinearLayout.setLayoutParams(
new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
09
newlinearLayout.setOrientation(LinearLayout.HORIZONTAL);
10
newlinearLayout.setLayoutParams(layoutParams);
11
12
for
(Map.Entry skuEntry : skuProperty.getPropertyMap().entrySet()) {
13
final
Long skuId = (Long) skuEntry.getKey();
14
final
SkuPropertyValue propertyValue = (SkuPropertyValue) skuEntry.getValue();
15
final
String skuName = propertyValue.getName();
16
final
Button skuButton =
new
Button(
this
);
17
skuButton.measure(
0
,
0
);
18
widthSoFar += skuButton.getMeasuredWidth();
19
if
(widthSoFar >= maxWidth) {
20
linearLayout.addView(newlinearLayout);
21
newlinearLayout =
new
LinearLayout(
this
);
22
newlinearLayout.setOrientation(LinearLayout.HORIZONTAL);
23
newlinearLayout.setLayoutParams(layoutParams);
24
newlinearLayout.addView(skuButton);
25
widthSoFar = skuButton.getMeasuredWidth();
26
}
else
{
27
newlinearLayout.addView(skuButton);
28
}
29
}
30
linearLayout.addView(newlinearLayout);
原理:
首先我们定义一个纵向的LinearLayout 对象,在定义一个横向的LinearLayout ,在for循环中不断向横向的LinearLayout 中加入子view,但是在加入前需要判断,如果累计的宽度大于屏幕的宽度后,需要将此横向LinearLayout 作为子元素加入纵向的LinearLayout ,然后重新new出一个横向的LinearLayout 将view加入其中并重置累计宽度大小,如果累计宽度还是小于屏幕宽度,则继续向横向LinearLayout 加入子view。
0 0
- LinearLayout代码实现分行
- Android使用代码实现RelativeLayout,LinearLayout布局
- Android使用代码实现RelativeLayout,LinearLayout布局
- Android使用代码实现RelativeLayout,LinearLayout布局
- android之【LinearLayout线性布局代码实现】
- android LinearLayout代码方式实现Weight
- Android使用代码实现RelativeLayout,LinearLayout布局
- 根据字体实现控件分行
- NSString常用代码(NSString分行显示)
- 一个浮动、分行工具栏的实现
- Android LinearLayout实现多行多列
- linearlayout实现fragment切换
- androd布局之linearLayout 代码
- Android UI 之使用java代码实现动态添加LinearLayout(一)
- LinearLayout下多个ListView实现滚动
- LinearLayout 轻松实现垂直滚动
- 利用LinearLayout实现屏幕分割
- android linearlayout代替listview实现
- 1009. Product of Polynomials (25)
- MySQL脚本insert中文失败
- 第76课:Spark SQL基于网站Log的综合案例实战之Hive数据导入、Spark SQL对数据操作每天晚上20:00YY频道现场授课频道68917580
- opencv-matlab-multi view geo-双目-相机参数-转置与不转置与转置与不转置-指南
- YTU 3006: 迷宫问题(栈与队列)
- LinearLayout代码实现分行
- [BZOJ3636] 教义问答手册
- Android -- Camera2(Android5.0)
- 100. Same Tree
- adb command
- 一天一命令 <cp\find\du>
- AndroidUI之注册界面的实现分析
- Android编程学习笔记 之 BroadcastReceiver组件
- 考试总结