如何从代码中设置android:layout_width="match_parent"?

12

我有不同的布局。一些是通过 XML 创建的,另一些则是通过代码动态创建的。当我使用 XML 时,可以使用“wrap_content”值设置宽度或高度。如何在动态情况下获得相同的结果?这是我的动态 TextView 的片段。我需要删除“final int width = 440;”并获得与“wrap_content”相同的值。怎么做?

final int width = 440;
final int height = textViewHeight;
final int top = getNewTop(height);

FrameLayout.LayoutParams layoutParams;
layoutParams = getLayoutParams(width, height, top);

TextView textView;
textView = new TextView(_registerNewMealActivity);
textView.setText(text);
textView.setLayoutParams(layoutParams);

_frameLayout.addView(textView);

你在 Google 中看到 wrap_content 了吗? - sensorario
6个回答

9
你可以使用以下代码: textView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, height)); 这行代码可以用来设置textView的宽度为自适应,高度为指定的值。

1
仅在提到FrameLayout而非RelativeLayout时加1: - Arunkumar
@ArunkumarSharma:你能告诉我它们有什么不同吗?每次使用LayoutParams时都感到非常困惑,不知道应该导入哪一个,或者如果你能提供任何链接或文章就更好了。 - DroidDev
1
@VishwasSharma LayoutParams被视图用来告诉它们的父级视图如何对它们进行布局。查看此链接 - SilentKiller
那么我们使用 FrameLayout 的 LayoutParams 变体,因为 TextView 被添加到了 FrameLayout 中,如果它被添加到 LinearLayout 中,我们应该使用 LinearLayout.LayoutParams 吗? - Chris

7

请按照以下步骤进行尝试:

FrameLayout.LayoutParams layoutParams;
layoutParams = getLayoutParams(LayoutParams.WRAP_CONTENT, height, top);

  TextView textView;
textView = new TextView(_registerNewMealActivity);
textView.setText(text);
textView.setLayoutParams(layoutParams);

2
您可以使用 FrameLayout.LayoutParams.WRAP_CONTENT 来设置宽度。

0

你可以像这样做。

    RelativeLayout.LayoutParams flparams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,(int)height);
            youlayoutname.setLayoutParams(flparams);

0

一般来说,你应该使用

textView.setLayoutParams(new FrameLayout.LayoutParams(width, height));

widthheight具有以下每一项:

  • 一个数字,使视图正好有那么多像素宽或高(要指定dp而非像素中的数字,请参见here
  • FrameLayout.LayoutParams.WRAP_CONTENT
  • FrameLayout.LayoutParams.MATCH_PARENT

此外,如果您使用的是LinearLayout,则应改为使用LinearLayout.LayoutParams,对于RelativeLayout也是如此。

例如,如果您希望textView具有与声明为<TextView android:layout_width="wrap_content" android:layout_height="match_parent"/>相同的行为,您应该执行:

textView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT));

-3

试试这个>>>

layoutParams.getLayoutParams().width = 20;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接