我有一个简单的BaseAdapter,它显示了用户可以打开或关闭的选项列表。当选择该选项时,我使用不透明的颜色,当它关闭时,我使用透明背景。
在OS的早期版本中(至少高达4.4.4),这可以按预期工作。但是,当我将其中一个测试平板升级到Android 5.1.1时,我注意到每当我关闭一个项目(并将背景资源设置为透明)时,“选定”颜色就会渗透。直到我做出另一个选择(在不同的项目上),“旧”颜色消失并且该项目真正透明。
以下是用于设置后台资源的代码段。我已经尝试将资源设置为0(删除背景)和透明#00000000无效。
@Override @NotNull
public View getView ( int position, @Nullable View view, @NotNull ViewGroup viewGroup )
{
final MapLayerModel mapLayer = (MapLayerModel)getItem( position );
final Context context = viewGroup.getContext();
final LayoutInflater inflater = (LayoutInflater)context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
if( view == null )
{
view = inflater.inflate( R.layout.menu_list_item, null );
}
// Configure the view
//
// Set text view
final TextView textView = (TextView)view.findViewById( R.id.menu_item_textview );
textView.setText( mapLayer.getDisplayName() );
// Set image
final ImageView imageView = (ImageView)view.findViewById( R.id.menu_item_image );
imageView.setImageResource( mapLayer.getIconResource() );
final ImageView selectionIndicatorView = (ImageView)view.findViewById( R.id.selected_indicator );
if( mapLayer.isSelected() )
{
Log.e( LOG_TAG, "Setting " + mapLayer.getType() + " to selected color" ) ;
view.setBackgroundResource( R.color.layer_menu_item_selected );
selectionIndicatorView.setImageResource( R.drawable.layer_menu_item_selected );
}
else
{
Log.e( LOG_TAG, "Setting " + mapLayer.getType() + " to transparent" ) ;
view.setBackgroundResource( R.color.crc_transparent );
selectionIndicatorView.setImageResource( R.drawable.layer_menu_item_unselected );
}
return view;
}
其中R.color.crc_transparent设置为#00000000