【问题标题】:implement android:src="@drawable/image" programmatically in Android在 Android 中以编程方式实现 android:src="@drawable/image"
【发布时间】:2011-11-12 21:30:14
【问题描述】:

我正在尝试在图像按钮上设置前景图像。经过一番研究,我发现了这个代码示例:

<ImageButton android:text="Button" android:id="@+id/button1"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:src="@drawable/icon"/>

我的问题是如何在代码中实际实现 android:src。

【问题讨论】:

    标签: android android-widget android-imageview android-button


    【解决方案1】:

    试试这个:

    ImageButton btn = (ImageButton)findViewById(R.id.button1);
    btn.setImageResource(R.drawable.newimage);
    

    newimagedrawable 文件夹中的图像名称。

    已编辑
    试试这个:

    ImageButton btn = (ImageButton)findViewById(R.id.button1);
    btn.setImageBitmap(bm);
    

    其中bm是从服务器提取的位图。

    再次编辑
    我看到你收到了一个 Drawable;好吧,这样做:

    normalImage = Drawable.createFromStream(code);
    Bitmap bm = ((BitmapDrawable)normalImage).getBitmap();
    ImageButton btn = (ImageButton)findViewById(R.id.button1);
    btn.setImageBitmap(bm);
    

    【讨论】:

    • 非常感谢.. 但是,我是从服务器获取图像而不是将其存储在可绘制文件夹中,有什么方法可以实现吗??
    • 这是超级马可,但我只限于可绘制..这是设计规范..我不能使用位图
    • @user788511:如果你仅限于drawables,你的服务器会返回什么?
    • 服务器返回的图片在运行时转换为drawable
    • @user788511:您将运行时转换后的图像保存在哪里?您转换后的图像是哪种 android 类型?
    【解决方案2】:

    以下是我以编程方式**或通过代码在 ImageButton 上设置 image:src 的方法:

    1.检索可绘制的图像。

    Drawable tempImage = getResources().getDrawable(R.drawable.my_image);
    

    2.获取视图。

    ImageButton tempButton = (ImageButton)findViewById(R.id.my_image_button);
    

    3.设置视图的图像。

    tempButton.setImageDrawable(tempImage);
    

    希望这对你也有用!

    【讨论】:

    • 非常清楚!但请注意,第 1 步使用的 API 在 API 级别 22 中已弃用。我将其替换为:ContextCompat.getDrawable(context, R.drawable.my_image)。
    【解决方案3】:

    希望对你有帮助

    ImageButton button1=(ImageButton)findViewById(R.id.button1);       
    button1.setImageResource(R.drawable.icon);
    

    【讨论】:

    • 非常感谢.. 但是,我是从服务器获取图像而不是将其存储在可绘制文件夹中,有什么方法可以实现吗??
    • 我认为您可以从该图像制作位图对象并使用 button1.img.setImageBitmap(yuorbitmapobject);
    【解决方案4】:

    试试这个::

    ImageButton tran_btn_skip;
    
    tran_btn_skip = (ImageButton) findViewById(R.id.btn);
        try {
            Bitmap bitmap_skip = BitmapFactory.decodeStream((InputStream) new URL(
                    "http://233.129.115.55/MRESC/images/test/skip.png")
                    .getContent());
            tran_btn_skip.setImageBitmap(bitmap_skip);
        } catch (Exception e) {
        }
    

    【讨论】:

    • 非常感谢.. 但是,我是从服务器获取图像而不是将其存储在可绘制文件夹中,有没有办法实现这一点??
    • 通过这个你可以从特定的url获取图片
    • 这是极好的 Nik,但是我使用的是可绘制对象而不是位图,有解决方法吗??
    • 基本上它将采用位图格式的任何图像并设置在按钮上。相信我,试着给我投票
    • 获取任何临时 url 和过去的代码并尝试一下,但请确保在清单中您需要获得 Internet 权限
    【解决方案5】:

    一个更短的变体

    views.setImageViewResource(R.id.button1, R.drawable.newbutton);
    

    【讨论】:

      【解决方案6】:

      我知道这是一个老问题,但对于未来的搜索...... 我相信您正在寻找的是:

      imgButton.setImageDrawable(drawable);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-11
        • 2015-05-01
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        相关资源
        最近更新 更多