2013-03-07 63 views
4

我有我的活動。它完美地在android 4.2上運行,但是當我在2.3(模擬器和真實設備)上運行它時,我看到一個白色屏幕(僅在底部,我看到了「下一個」項的一些像素),當我開始滾動。getView僅在android api級別8上滾動時調用

enter image description here enter image description here

名單:

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/category_browser" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clipChildren="false" 
     android:dividerHeight="1dp" 
     tools:listitem="@layout/category_browser_list_item" > 
</ListView> 

項目:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/category_browser_list_item" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="fill" 
    android:background="#ffffff" 
    android:clickable="true" 
    android:gravity="fill" 
    android:orientation="horizontal" > 
     <ImageView 
      android:id="@+id/category_browser_list_icon" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_gravity="fill" 
      android:layout_weight="0" 
      android:background="#ffffff" 
      android:contentDescription="@+id/category_browser_list_item_description" 
      android:src="@drawable/icon" /> 
     <TextView 
      android:id="@+id/category_browser_list_title" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:gravity="center_vertical|start" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:text="@string/category_browser_title" 
      android:textColor="#000000" 
      android:textSize="24sp" /> 
     <CheckBox 
      android:id="@+id/category_browser_list_checkbox" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:layout_gravity="center_vertical" 
      android:layout_weight="0" 
      android:clickable="false" /> 
</LinearLayout> 

代碼:

protected LinearLayout getListElementView() { 
    View listItem = inflator.inflate(R.layout.category_browser_list_item, null); 
    LinearLayout listElement = (LinearLayout)listItem.findViewById(R.id.category_browser_list_item); 
    return listElement; 
} 

    public class CategoryListAdapter extends BaseAdapter { 
     @Override 
     public int getCount() { 
      int count = null != categories && null != categories.categories ? categories.categories.size() : 0; 
      Log.d(TAG, "getCount:" + count); 
      return count; 
     } 

     @Override 
     public Category getItem(int position) { 
      return null != categories && null != categories.categories ? categories.categories.get(position) : null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      LinearLayout listView = null; 
      if (convertView != null) { // if it's not recycled, initialize some attributes 
       listView = (LinearLayout)convertView; 
      } 
      if (listView == null) { // if it's not recycled, initialize some attributes 
       listView = getListElementView(); 
      } 

      final Category category = getItem(position); 
      category.setListView(listView); 
      File cacheIconFile = category.getCacheIconFile(); 
      ImageView imageView = (ImageView)listView.findViewById(R.id.category_browser_list_icon); 
      if (cacheIconFile.exists()) { 
       imageView.setImageURI(Uri.fromFile(cacheIconFile)); 
      } else { 
       Drawable noIcon = getResources().getDrawable(R.drawable.icon); 
       imageView.setImageDrawable(noIcon); 
      } 
//   Log.i(TAG, category.name + ": " + category.iconUrl + ": " + category.downloadBaseUrl); 
      if (null != category.name) { 
       TextView textView = (TextView)listView.findViewById(R.id.category_browser_list_title); 
       textView.setText(category.name); 
      } 

      listView.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        //start downloading category with downloadmanager 
        //(category); 
        Intent intent = category.getIntent(); 
        if (null != intent) 
         startActivity(intent); 
        else { 
         category.setStatus(Category.CategoryDownloadStatus.DOWNLOADING); 
         downloadLocalePackage(category); 
        } 
       } 
      }); 
      return listView; 
     } 
    } 
+0

你可以顯示'getListElementView()'方法嗎? – Eric 2013-03-07 03:56:05

+0

我加了,但@ Devunwired的答案解決了問題 – Gavriel 2013-03-07 20:36:33

回答

0

從您的ListView XML聲明中刪除android:clipChildren="false"。雖然您看到的效果可能是2.2/2.3版本中的一個bug,但在更高版本中已得到解決,但此屬性在ListView中確實沒有多大用處。

相關問題