ImageView不显示以编程方式设置的图像

时间:2019-06-07 14:28:11

标签: android imageview

我有一个ImageView

<androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/iconIv"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:layout_marginStart="16dp"
                android:layout_marginTop="16dp"
                android:layout_marginBottom="16dp"
                android:adjustViewBounds="true"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:ignore="ContentDescription"
                tools:srcCompat="@sample/icon[1]" />

///我也尝试了普通的ImageView,但没有成功

它是完全可见的,我在UiAutomatorViewer中看到了它的边界。

例如,当我从XML设置图像时,app:srcCompat="@drawable/ic_telephone"会正常显示。

如果我以编程方式设置相同的图像 iconIv.setImageResource(R.drawable.ic_telephone),则不会显示图像。

它也不适用于毕加索:

Picasso
    .with(iconIv.context)
    .load(R.drawable.ic_telephone)
    .into(iconIv)

Picasso
    .with(iconIv.context)
    .load(appTask.iconUrl)
    .into(iconIv)

或使用Glide:

Glide
    .with(iconIv.context)
    .load(appTask.iconUrl)
    .into(iconIv)

为什么?

2 个答案:

答案 0 :(得分:0)

您需要 get() https://square.github.io/picasso/

Picasso.get()
    .load(R.drawable.ic_telephone)
    .into(iconIV);

答案 1 :(得分:0)

嗯,尝试一下,您需要AppCompatImageView。
我刚刚测试了FYI

 private AppCompatImageView mImv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImv = findViewById(R.id.iconIv);
        mImv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.v(TAG, "onClick: ");
            }
        });
        mImv.setImageResource(R.drawable.ic_save);