我在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>
我得到的是没有中央图像的同一屏幕(正确显示文字和蓝牙指示)
我在这个问题上开始变得非常沮丧。我只是想显示2张图片。谢谢。
我没有提到它,但是使用AsyncTask将主图像加载到后台。我试图添加一些View.invalidate()
(在顶层布局上,在图像上,在蓝牙指示上),但它没有解决问题。
除了旋转时出现的图像,当我尝试捏住不存在的图像时,它也会出现。并且尝试以编程方式重置缩放(hacky)也不起作用。
答案 0 :(得分:0)
好的,我发现了错误。
正如我所说的,我有一个AsyncTask(xSession::xppCallStack()
),我调用它来将Bitmap加载到后台的ImageView中。
它的名字是这样的:
BitmapWorkerTask
将new BitmapWorkerTask(imageView, getApplicationContext()).execute(filename);
更改为getApplicationContext()
或MainActivity.this
可以解决问题:/(但是,即使应用程序上下文,我仍然发现它如此长久以来如此有效!=活动背景!)