如果屏幕未旋转且其他图像视图已更新,则图像视图不显示图像

时间:2016-01-25 10:40:44

标签: java android

问题

我在Android上遇到了2个ImageViews的问题。

第一个显示大图像。它位于RelativeLayout内,是一个自定义ImageView(com.ortiz.touch)。它一直表现良好。

第二个也在RelativeLayout中,但是是一个“普通”的ImageView。它显示了蓝牙状态。显示它不会导致任何问题。

然而,当我以编程方式更改蓝牙指示灯的src的代码时,第一张图像不再显示....

问题来自自定义视图无法正常工作吗?我错过了什么吗?

代码

如果我不做这种事情:

bluetoothState.setImageResource(R.drawable.bluetooth_enabled192);

图像显示正确。

这是我使用的布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#1b1b1b"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">

    <com.ortiz.touch.TouchImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/imageView"
        android:layout_gravity="center"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/textView" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="32dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/emptyDisplayText"
        android:layout_gravity="center_horizontal|bottom"
        android:gravity="center_vertical|center_horizontal"
        android:textAllCaps="true"
        android:elegantTextHeight="false"
        android:ellipsize="end"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textSize="15sp"
        android:textColor="#f3f3f3"
        android:id="@+id/textView"
        android:background="@drawable/rounded_rect"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="10dp" />

    <ImageView
        android:layout_width="52dp"
        android:layout_height="52dp"
        android:id="@+id/bluetooth_state"
        android:scaleType="centerCrop"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/textView"
        android:layout_alignEnd="@+id/textView"
        android:layout_gravity="top|right"
        android:layout_margin="10dp"/>

</RelativeLayout>

期望结果

screenshot

我得到的是没有中央图像的同一屏幕(正确显示文字和蓝牙指示)

NB

我在这个问题上开始变得非常沮丧。我只是想显示2张图片。谢谢。

修改

我没有提到它,但是使用AsyncTask将主图像加载到后台。我试图添加一些View.invalidate()(在顶层布局上,在图像上,在蓝牙指示上),但它没有解决问题。

除了旋转时出现的图像,当我尝试捏住不存在的图像时,它也会出现。并且尝试以编程方式重置缩放(hacky)也不起作用。

1 个答案:

答案 0 :(得分:0)

好的,我发现了错误。

正如我所说的,我有一个AsyncTask(xSession::xppCallStack()),我调用它来将Bitmap加载到后台的ImageView中。

它的名字是这样的:

BitmapWorkerTask

new BitmapWorkerTask(imageView, getApplicationContext()).execute(filename); 更改为getApplicationContext()MainActivity.this可以解决问题:/(但是,即使应用程序上下文,我仍然发现它如此长久以来如此有效!=活动背景!)