我使用 LayoutInflater 为视图充气。我膨胀的 RelativeLayout 的背景颜色在我的 xml 文件中设置。我在我的一个设备上遇到了一个奇怪的问题:有时(随机)背景颜色是我的 colors.xml 中的另一种(错误)颜色。有没有人遇到过这个问题?
细节:
我有ListView
一个CursorAdapter
。我只用一个静态项目来膨胀列表项目(所以我认为这不是回收问题),使用以下代码:
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
View v = vi.inflate(R.layout.bookmark_item, null) ;
//bindView(v, context, cursor) ;
Log.wtf("newView", "View color: " + Integer.toString(((ColorDrawable) (((RelativeLayout)v.findViewById(R.id.bookmark_row)).getBackground())).getColor())) ;
return v;
}
我的layout/bookmark_item.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/bookmark_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/app_menu_item_background"
tools:ignore="UselessParent" >
<TextView
android:id="@+id/bookmark_item_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
</RelativeLayout>
内部 RelativeLayout 的背景颜色设置为@color/app_menu_item_background
。这种颜色在我的R.java
:
public static final int app_menu_item_background=0x7f0a0036;
我还有一个名为 的颜色@color/app_menu_item_colored_background
,我在代码的其他地方使用它,它与我的书签列表和适配器没有任何共同之处。它还具有不同的资源 ID R.java
:
public static final int app_menu_item_colored_background=0x7f0a0038;
而且它们都是不同的颜色:
<color name="app_menu_item_background">#517409</color>
<color name="app_menu_item_colored_background">#f6efde</color>
然后,在运行我的应用程序时,有时(并非总是)我的视图使用了错误的app_menu_item_colored_background
背景颜色。我记录了膨胀的视图颜色(参见上面的代码),有时甚至会有所不同:
"newView" - "View color: -11439095"
"newView" - "View color: -593954"
请注意,第一种颜色是#517409
,第二种是#f6efde
。
奇怪的是,我只能在一台设备上重现错误,三星 Galaxy S3 mini,每 10 次尝试大约 2-3 次。