ListView在某些设备上是黑色的

时间:2014-09-04 18:57:25

标签: android xml listview

在我的主要活动上是一个ListView,但在某些设备上,如Galaxy s3,该项目是黑色的,但在我的S4上,它显示正常,我可以看到文本。我试过android:background =“@ android:color / transparent但它仍然是黑色,也是android:cacheColorHint =”@ android:color / transparent“没有帮助。我希望有人可以提供帮助。

MainActivity:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:cacheColorHint="@android:color/transparent"
        android:background="@android:color/transparent" >
    </ListView>

ListView只有第一个没有内容textview的标题:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@layout/list_item_border"
    android:cacheColorHint="@android:color/transparent" >


<!--     <style android:name="Divider">
    <item android:name="android:layout_height">100dp</item>
    <item android:name="android:background">?android:attr/listDivider</item>
    </style> -->

    <TextView
        android:id="@+id/titleItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:paddingLeft="3dp"
        android:paddingRight="3dp"
        android:paddingBottom="10dp"
        android:textColor="#000000"
        android:cacheColorHint="@android:color/transparent"
        android:background="@android:color/transparent"
        android:textSize="25dp" />

1 个答案:

答案 0 :(得分:0)

我遇到了你所描述的同样问题。看起来您还有一个用于显示列表视图项的自定义视图 - 所以这可能对您有用!

我已经覆盖了我的&#34; CustomAdapter&#34;中的getView方法,这是一个扩展ArrayAdapter的类。在该类的getView方法中,我将所有未选择的项设置为drawable - 并且drawable具有纯色是很重要的 - 如下所示:

(这是R.drawable.item_default)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@android:color/transparent" />

</shape>

我的问题通过这样解决了。下面是我的扩展类的代码:

public class CustomAdapter extends ArrayAdapter<String> {

    private ArrayList<String> items;
    private LayoutInflater mInflater;
    private int viewResourceId;
    private int selectedPosition = -1;
    private int selectedTextView;
    private Context myContext;

    public CustomAdapter(Activity activity,int resourceId, int textViewId, 
        ArrayList<String> list, Context context) {
        super(activity,resourceId,textViewId, list);

        // Sets the layout inflater
        mInflater = (LayoutInflater)activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        // Set a copy of the layout to inflate
        viewResourceId = resourceId;

        selectedTextView = textViewId;

        myContext = context;

        // Set a copy of the list
        items = list;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LinearLayout layout = (LinearLayout) convertView;

        if (layout == null) {
            layout = (LinearLayout)mInflater.inflate(viewResourceId, null);
        }
        TextView tv = (TextView) layout.findViewById(selectedTextView);

        tv.setText(items.get(position));

        // Change the background color
        if (position==selectedPosition){
            tv.setBackground(myContext.getResources().getDrawable(R.drawable.item_pressed));
        }
        else {
            tv.setBackground(myContext.getResources().getDrawable(R.drawable.item_default));
        }

        return layout;
    }

    public void setSelected(int position) {
        selectedPosition = position;
    }
}

黑名单视图仅在我在Galaxy S2上运行应用程序时显示。它像我想要的S4 Mini一样透明 - 希望这可能会在某种程度上帮助你!