【问题标题】:ImageView Disappears when trying to Set the Width and Height programmatically尝试以编程方式设置宽度和高度时,ImageView 消失
【发布时间】:2017-03-24 20:51:52
【问题描述】:

这是我的代码

onCreate()
{
    img = (ImageView)findViewById(R.id.img);
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int w = size.x;
    int h = w * (9/16);
    img.getLayoutParams().height = h;
    img.getLayoutParams().width = w;
    img.requestLayout();

    //The rest of the code spawns a new thread and downloads an image for the image view.
}

是的,我也尝试过使用 FrameLayout 参数(因为我的 ImageView 在 FrameLayout 中),类似 img.setLayoutParams(new FrameLayout.LayoutParams(w,h)) 的东西不起作用

我想要做的是不管正在下载的图像/图像大小,我想创建一个 w:h = 16:9 比例的 ImageView。我的逻辑有什么问题?我也试过做一个img.requestLayout(),没用,把代码移到onAttachWindow(),没用。这里有什么问题?非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: android android-widget imageview layoutparams


    【解决方案1】:

    您的代码似乎唯一的问题是这一行:

     int h = w * (9/16);
    

    (9/16) 以整数除法的形式执行,因此结果为0。将其更改为:

     int h = (int)(w * 9f / 16f);
    

    【讨论】:

    • 喔喔喔喔!为什么我没有想到 int 的事情!我会试试这个,让你知道,我想知道我的代码中的 ImageView 参数有什么问题,为什么不对。非常感谢您的帮助..!
    • 是的,这行得通,但是当我使用 Picasso 下载图像时,图像视图消失了....例如,当做这样的 Picasso.with(this).load(URL).fit( ).into(img, new Callback(){ Override public void onSuccess() { } Override public void onError() { //显示错误 } });
    • 我猜对了,但 Picasso 并没有帮到我,所以 AsyncTask 终于帮了我....想找出原因....
    • 又该死的兄弟!您知道 Picasso 实际上似乎可以处理各种安全异常并防止应用程序发生严重崩溃!所以就我而言,我没有添加互联网许可和瞧!它工作......简单......而且很容易!但是我还有一个问题要问你......我的代码除了 int 部分有什么问题吗?
    猜你喜欢
    • 2011-03-09
    • 2011-04-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2016-10-27
    • 2018-02-16
    相关资源
    最近更新 更多