更改相对布局的宽度和高度动态地。

10 浏览
0 Comments

更改相对布局的宽度和高度动态地。

我在LinearLayout内使用以下布局结构:\n\n \n \n \n \n \n \n\n\n\n\n并且我希望能够在Java文件中动态设置RelativeLayout的宽度和高度,而不是在xml文件中将其设置为320px,但是我无法实现这一点,因为屏幕方向的改变对我来说不是问题,我只限制在纵向模式下。使用match_parent可以将相对布局设置为全屏,但是我必须在屏幕上放置其他视图,所以是否有可能或者我必须以另一种方式实现...

0
0 Comments

问题原因:在相对布局中,动态改变视图的宽度和高度时,需要使用合适的方法来更新布局参数。如果直接设置布局参数的宽度和高度,可能会导致布局无法正确显示。

解决方法:可以尝试使用以下代码来改变布局参数的宽度和高度,并更新布局。

getLayoutParams().height = x;
requestLayout();

这段代码中,`getLayoutParams().height`用于设置视图的高度,`x`是要设置的高度值。`requestLayout()`方法用于请求布局的重新计算和绘制,并使新的布局参数生效。

另外,也可以使用`invalidate()`方法来实现相同的效果,即:

getLayoutParams().height = x;
invalidate();

`invalidate()`方法用于通知视图进行重绘,以使新的布局参数生效。

通过使用上述代码,可以在运行时动态改变相对布局中视图的宽度和高度,从而实现布局的动态调整。

0
0 Comments

在解决问题之前,我们需要了解问题的出现原因。问题是“如何动态更改相对布局的宽度和高度”。

原因是在XML布局文件中没有为相对布局设置ID,导致在Java文件中无法找到相对布局的引用。

解决方法是在XML布局文件中为相对布局设置一个唯一的ID。然后在Java文件中使用findViewById方法来获取相对布局的引用,并使用setLayoutParams方法来动态更改相对布局的宽度和高度。

具体的解决方法如下所示:

首先,在XML布局文件中给相对布局设置一个ID:

android:id="@+id/relativelayout"

然后,在Java文件中编写以下代码:

RelativeLayout Rl = (RelativeLayout) findViewById(R.id.relativelayout);
RelativeLayout.LayoutParams layout_description = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.FILL_PARENT or YourUserDefinedWidth,
    RelativeLayout.LayoutParams.FILL_PARENT or YourUserDefinedHeight);
Rl.setLayoutParams(layout_description);

通过以上步骤,我们可以动态更改相对布局的宽度和高度。

0
0 Comments

问题出现的原因是Android在显示后不会刷新具有wrap_content属性的视图布局,即使使用invalidate()或requestLayout()方法也不行。因此,如果添加了一个子视图或动态修改了内容,就会出现问题。如果你知道x的值,并且只需要执行一次,那么getLayoutParams().height = x加上requestLayout()是一个很好的解决方法。但是,一旦你覆盖了wrap_content属性,LayoutParams中的wrap_content就会丢失。

为了解决这个问题,我编写了一个静态类,重新计算尺寸并强制更新具有wrap_content属性的视图布局。可以在这里找到代码和使用说明: https://github.com/ea167/android-layout-wrap-content-updater

希望你喜欢!

嘿,Eric,你有代码的使用示例吗?我似乎无法访问你的类中的方法!

你确实用那个类拯救了我的生活。非常感谢你。

0