我尝试使用LinearLayout
开发类似于网格的方法。我希望在单行图像之后有3张图像和精确的底部文本。
我尝试过:
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
ImageView icon = new ImageView(context);
Item item = getItem(page, index);
Log.e("tag", item.getDrawable());
imageLoader.displayImage(item.getDrawable(), icon, R.drawable.ic_launcher);
icon.setPadding(15, 15, 15, 15);
layout.addView(icon);
TextView label = new TextView(context);
label.setTag("text");
label.setText(item.getName());
label.setTextColor(Color.BLACK);
label.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
label.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
layout.setWeightSum(3f);
layout.addView(label);
我有一个返回View
的视图方法,所以我在方法结束时返回return layout;
。
在这里,我给了重量3按钮,这对我不起作用。并且代码显示了超过3个图像的行与文本,但希望有重量3图像和底部文本。
答案 0 :(得分:1)
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 1.0f);
或
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
Button button = new Button(this);
button.setLayoutParams(params);
答案 1 :(得分:0)
以编程方式设置线性布局权重 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT,1.0f);
答案 2 :(得分:0)
我会根据您的需要定义TableLayout
TableRow
个TableRows
。在每个LinearLayout
上,我添加VERTICAL
View
方向,其中包含您需要的两个ImageView
:TextView
和LinearLayout
}。
这是1
,您应该在其中设置权重LinearLayout
(对所有人)。您必须获取屏幕的宽度,并查看要添加的新TableRow
是否仍适合当前行。如果没有,只需开始新的final Display display = getWindowManager().getDefaultDisplay();
final Point size = new Point();
display.getSize(size);
final WindowManager.LayoutParams params = getWindow().getAttributes();
。
要获得屏幕的宽度,您可以使用:
params.width
可以通过LinearLayout
属性访问屏幕的宽度,只需将其与.getWidth()
的{{1}}方法进行比较,并保留增量帐户(float
)当前TableRow
的宽度可帮助您确定当前项目是应放置在现有行还是新行中。