2012-08-07 3 views
0

GridView와 이미지 선택기를 사용하여 이미지를 눌렀을 때와 눌렀을 때의 이미지가 다르게 표시됩니다. 모든 것이 컴파일되지만 애플리케이션을 실행하면 "이진 XML 파일 라인 # 9 : 클래스 선택기를 부 풀리는 동안 오류가 발생합니다."라는 오류 메시지가 나타납니다.GridView에서 이미지 선택기를 사용할 때 클래스 선택기를 부 풀릴 때 오류가 발생했습니다.

gridview에서 이미지 선택기를 사용할 수 있습니까? 내가 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> 

그리드 뷰의 어댑터에 대한 코드입니다 : 여기

은 각 격자 항목에 대한 XML의

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; 

} 


} 

답변

1
선택기 실제로로 "드로어 블"폴더에 설정해야합니다

그것의 자신의 .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" > 
+0

감사합니다. 이미지 하단에 약간의 여유 공간이 추가되어 작동했습니다. center_horizontal을 지정 했음에도 불구하고 텍스트를 가운데 맞추기 위해 텍스트의 시작 부분에 여분의 공백을 추가해야했습니다. 더 나은 방법을 알고 있다면 공백을 추가해주세요. – Andy

+0

글쎄 TextView 너비는 "wrap_content"는 TextView가 텍스트와 항상 같은 크기이기 때문에 아무 것도하지 않는다는 것을 의미합니다. 원하는 것을하기 위해 API를 "fill_parent"또는 "match_parent"(API에 따라 다름)로 설정해야합니다. –

관련 문제