ImageView在某些设备上显示Drawable半透明/透明

时间:2014-08-28 07:55:30

标签: android android-layout imageview png

我们有一个TextView,其中包含来自应用资源的drawable-left和drawable-right。在某些设备上,如

  • Sony Xperia L运行Android 4.1.2,
  • 三星Galaxy Young或
  • 三星Galaxy SII

我们正面临一个奇怪的问题。可绘制的将显示为半透明/透明。在其他设备上,如

  • 三星Galaxy S4(4.4.2)或
  • HTC ONE V(4.0.3)

drawable将正确显示。

这是布局定义的剪切:

        <TextView
            android:id="@+id/button_current_warnings"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginTop="3dp"
            android:gravity="center_vertical"
            android:background="@drawable/selector_classic_list_item"
            android:layout_gravity="center_vertical"
            android:drawablePadding="8dp"
            android:drawableLeft="@drawable/ic_classic_current_warning_white"
            android:drawableRight="@drawable/ic_classic_row_arrow"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:maxLines="2"
            android:ellipsize="end"
            android:text="@string/current_warnings"
            android:textSize="?attr/warningGermanyBoxTextSize"
            android:textColor="?attr/itemFavoriteTitleTextColor"/>

在HTC One V设备上,这种布局看起来非常不错:

enter image description here

在Sony Xperia L上,由于imageview drawables的透明度,布局被打破。两个drawable只显示了一点点:

enter image description here

此外,如果我们将drawable更改为另一个,则两个设备上的结果都很好:

HTC:

enter image description here

索尼:

enter image description here

此外,我附上了用于我当前测试的两个drawable(它们都是白色的,因此你不会在这里看到任何东西):

错误显示drawable:

enter image description here

更正显示的drawable:

enter image description here

有没有人遇到同样的问题或对我们有任何提示?

更新:在我的代码中,我只在此TextView上设置了ClickListener:

     buttonGermany = returnView.findViewById(R.id.button_current_warnings);
     buttonGermany.setVisibility(View.VISIBLE);
     buttonGermany.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Do something
        }
     });

1 个答案:

答案 0 :(得分:2)

我在Android 4.1.2(Jelly Bean)设备上只遇到过这个问题。图标半透明呈现的问题与4.1.2中的drawables缓存有关。就我而言,我在drawable-selector中使用了错误的ic_classic_current_warning_white-drawable:

<selector xmlns:android="schemas.android.com/apk/res/android"; android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 
    <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/ic_classic_current_warning_white"/> 
     <item android:state_pressed="true" android:drawable="@drawable/ic_classic_current_warning_white"/> 
    <item android:drawable="@drawable/ic_classic_current_warning_black"/> 
</selector>

此选择器用于上一个活动中的按钮。如果我触摸此按钮,则会显示上面的视图。通过使用android:exitFadeDuration ic_classic_current_warning_white-drawable在触摸我的按钮后淡出。但是,当新活动打开时,似乎可绘制缓存包含对ic_classic_current_warning_white-drawable的引用,其alpha值低于100%。如果我在下一个视图中再次使用此drawable,它不会显示100%alpha,但在离开上一个活动时会显示alpha值。

我目前的解决方案只是复制drawable ic_classic_current_warning_white。一个将用于选择器。另一个副本将用于&#34;静态&#34;目的。