0

GridView と画像セレクターを使用して、画像が押されたときと押されていないときで画像が異なるようにしています。すべてがコンパイルされますが、アプリケーションを実行すると、「 Binary XML file line #9: Error inflating class selector 」というエラーが表示されます。

グリッドビュー内で画像セレクターを使用することは可能ですか? xml からセレクターを取り出すと、正常に動作します。

各グリッド アイテムの xml は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp" >
<selector   
     xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/status_button_down"
          android:state_pressed="true" />
    <item android:drawable="@drawable/status_button_down"
          android:state_focused="true" />
    <item android:drawable="@drawable/status_button_up" />
</selector>
<TextView
    android:id="@+id/grid_item_label"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Status"    
        android:textSize="9pt"
        android:typeface="sans"
        android:textColor="#000000"  
        android:gravity="center_horizontal"
        android:layout_gravity="center_horizontal|bottom"

         />
</LinearLayout>

グリッド ビューのアダプターのコードは次のとおりです。

public class ImageAdapter extends BaseAdapter {
private Context mContext;

public ImageAdapter(Context c) {
    mContext = c;
}

public int getCount() {
    //return mThumbIds.length;
    return 16;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;
        //ImageView imageView;
    if (convertView == null) {  // if it's not recycled, initialize some attributes

        gridView = new View(mContext);

        // get layout from mobile.xml
        gridView = inflater.inflate(R.drawable.status_button, null);

        // set value into textview
        TextView textView = (TextView) gridView
                .findViewById(R.id.grid_item_label);

        textView.setText("Status");


    } else {
        //imageView = (ImageView) convertView;
        gridView = (View) convertView;

    }

    return gridView;

}


}
4

1 に答える 1

1

セレクターは、実際には「drawables」フォルダーに独自の .xml ファイルとして設定する必要があります。次に、次のように呼び出すことができます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/my_selector" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp" >
于 2012-08-07T18:46:52.467 に答える