gpt4 book ai didi

android - 动态更改相对布局宽度和高度

转载 作者:IT老高 更新时间:2023-10-28 23:27:13 25 4
gpt4 key购买 nike

您好,我在 LinearLayout 中使用以下布局结构

<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/tv1"
android:layout_height="wrap_content"
android:gravity="left"
android:paddingLeft="10dp"
android:textColor="#000" />

<TextView
android:id="@+id/tv2"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:gravity="right"
android:paddingRight="10dp"
android:textColor="#000" />
</TableRow>
</TableLayout>

<ImageView
android:id="@+id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="320px"
android:layout_height="320px"
android:gravity="center" >
</RelativeLayout>

并且想要从 java 文件中动态设置相对布局宽度和高度,而不是在 xml 文件中将其设置为 320px 但无法做到这一点,方向更改不是问题,因为我将其限制为仅在纵向模式下。可以使用 match_parent 在全屏上设置相对布局,但我必须在屏幕上放置另一个 View ,所以有可能还是我必须以另一种方式实现它...

最佳答案

一旦显示,Android 不会使用 wrap_content 刷新 View 布局。即使使用 invalidate()requestLayout()。所以如果你添加一个 subview ,或者动态修改内容,你就完蛋了。

getLayoutParams().height = x 加上 requestLayout() 如果您知道“x”并且只需要执行一次,那么是一个很好的解决方案。之后,LayoutParams 中的 wrap_content 将丢失,因为您已将其覆盖。

为了解决这个问题,我编写了一个静态类,它重新计算大小并使用 wrap_content 强制更新 View 的布局。此处提供了代码和使用说明:

https://github.com/ea167/android-layout-wrap-content-updater

享受吧!

关于android - 动态更改相对布局宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com