更改视图的可见性和背景时的问题

时间:2014-01-24 15:44:34

标签: java android android-layout android-drawable

我有一个LinearLayout TextView的可见性和背景(GradientDrawable)根据函数myFunction()而变化:

<LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:animateLayoutChanges="true"
        android:gravity="center"
        android:orientation="vertical" >


    (...Some views...)


    <TextView
            android:id="@+id/currentPercentage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:singleLine="true"
            android:text="XX.X%"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/White" />

</LinearLayout>

currentPercentage TextView默认情况下具有GONE可见性,并且根据包含它的片段中的某些事件,可能会将其更改为可见(或返回{{1} })及其背景为不同的GONE,如此:

GradientDrawable

这很好,因为myFunction(...){ TextView currentPercentage= (TextView) getView().findViewById(R.id.currentPercentage); if(condition ... ) { Color color = // Color based on the condition... GradientDrawable gd = new GradientDrawable( GradientDrawable.Orientation.TL_BR, new int[] {color,color}); DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int dp = Math.round(10f / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); gd.setCornerRadius(dp); currentChartPercentage.setBackground(gd); } else if( otherCondition...) { // ... similar stuff ... } else { // Hide the currentPercentage TextView currentPercentage.setVisibility(View.GONE); } } 的背景和可见性在调用TextView时会顺利变化,而myFunction()中的其他元素会移动(带动画)以腾出空间对于LinearLayout

我的问题是,只要可见性从GONE变为VISIBLE,View就会很好地消失(正如TextView所预期的那样),但最终会出现一个恼人的黑色背景{{1}圆角是(见图)。

Annoying Black Background

在此之后,如果我触摸其他内容或拖动片段(它在android:animateLayoutChanges="true"内),黑色背景就会消失。如果再次调用GradientDrawable,视图已经可见,则背景颜色会根据需要更改,不会出现黑色背景。

另外,如果我禁用动画,我也不会获得黑色背景。因此,问题似乎与通过动画从GONE到VISIBLE的可见性有关。

Round Corners OK

此行为是在使用Android 4.3的模拟器上获得的,我还没有在我的真实设备上测试过它。

有没有人知道为什么会发生这种情况?

修改

刚刚在带有ICS的真实设备上进行测试,没有任何问题。

编辑2:

我曾经遇到过类似于Background ListView becomes black when scrolling的ListView中出现不良背景的问题,但在这种情况下,设置ViewPager不会做任何事情。

0 个答案:

没有答案