以编程方式LinearLayout权重

时间:2014-04-24 05:23:52

标签: android android-layout

我尝试使用LinearLayout开发类似于网格的方法。我希望在单行图像之后有3张图像和精确的底部文本。

enter image description here

我尝试过:

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图像和底部文本。

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 TableRowTableRows。在每个LinearLayout上,我添加VERTICAL View方向,其中包含您需要的两个ImageViewTextViewLinearLayout }。

这是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的宽度可帮助您确定当前项目是应放置在现有行还是新行中。