【问题标题】:View disappears by setting the height programmatically通过以编程方式设置高度,视图消失
【发布时间】:2013-09-03 06:39:59
【问题描述】:

我一直在尝试在 Java 中以编程方式设置 ImageView 的高度, 但是当我启动它时,它就消失了。

代码类似如下

ImageView img = (ImageView)findViewById(R.id.image);
img.setImageResource(picture[i];
DisplayMetrics dm = new DisplayMetrics();
int width = dm.widhtPixels;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, width/3);
img.setLayoutParams(layoutParams);

也许我必须将图像和另一个文本(代码中未提及)附加到 CustomAdapter 以创建 ListView。

感谢您的帮助:-)

【问题讨论】:

    标签: android listview view imageview height


    【解决方案1】:

    我刚刚测试了您的代码。问题与宽度参数以及您如何获得它有关。如果您传递文字值,则设置参数的代码将起作用

    如果你尝试这个(我知道这不是你想要的,请耐心等待)

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(150, 50);
    img.setLayoutParams(layoutParams);
    

    你会看到它是有效的(你不应该使用这样的文字,至少在没有将它们缩放到 DP 的情况下不能使用),但这不是你想要的,因为你想在宽度之外动态地做到这一点。

    在 onCreate() 中显然存在获取宽度和高度的问题,请参阅此问题和相应的答案 How to get the width and height of an Image View in android?

    希望这可以缩小您的搜索范围。

    【讨论】:

    • 是的,你说得对,我想动态地做到这一点。但我认为你发布的那个问题处理了一些不同的事情。因为我想根据给定设备的屏幕尺寸制作 ImageView 的宽度和高度。最后,View 应该填满屏幕的整个宽度,并且应该调整高度,即 width/3。
    • 我更想强调问题在于宽度值,而不是您应用布局参数的代码。您需要找到一种获取屏幕宽度值的具体方法,然后其余部分将起作用,因为在 onCreate() 中执行此操作仍然会导致问题。您可能需要在 OnCreate() 之后以某种方式执行此操作。
    • 谢谢 :-) 有什么想法可以做到这一点吗?
    • 这个答案展示了多种获取宽度的方法stackoverflow.com/a/1016941/2728623stackoverflow.com/a/4847027/2728623,但是您必须注意宽度大小。用它转换布局参数时,简单地除以 3 是不准确的,您可能需要进行一些转换并计算出来,这将如何从显示指标中获取宽度参数。
    【解决方案2】:

    你想达到什么目的,图像总是屏幕宽度的 1/3 吗?

    如果是这样,您可以在布局中使用布局权重轻松完成此操作。在父级上设置 weightSum=3,然后在图像视图上使用 layout_weight=1。

    【讨论】:

    • 我试图实现ImageView填满屏幕的整个宽度,高度应该是宽度的1/3,因为图片的宽高比是3:1
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-02-03
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多