2016-03-24 51 views
2

我有使用自定義列表項視圖的自定義列表視圖適配器。自定義列表項目視圖左側有一個圖像視圖,其中包含兩個TextViews,右側是主標題,下面是副標題。我想要想要發生的是讓字幕消失,並且如果沒有潛臺詞要顯示,則主要文字填充空格。自定義ListView項目視圖中的TextView未在API 18和19中填充父項

我已經測試過這個對抗16至23之間的所有其他手機/平板電腦的API。一切都按預期工作除了當我運行Android 4.3.1(API 18)Android 4.4.2(API 19 )。在API 18或19上運行時,字幕視圖可見性會設置爲View.GONE,但主標題視圖不會調整佔用空間。

有人知道這裏發生了什麼嗎?

這裏的列表項佈局文件:

list_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:padding="5dp"> 

    <ImageView 
     android:id="@+id/list_item_snapshot_imageview" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@color/medium_grey" 
     android:contentDescription="@string/item_snapshot" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignBottom="@id/list_item_snapshot_imageview" 
     android:layout_alignTop="@id/list_item_snapshot_imageview" 
     android:layout_marginLeft="5dp" 
     android:layout_marginStart="5dp" 
     android:layout_toEndOf="@id/list_item_snapshot_imageview" 
     android:layout_toRightOf="@id/list_item_snapshot_imageview" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/list_item_title_textview" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textSize="20sp" 
      tools:text="Main Text" /> 

     <TextView 
      android:id="@+id/list_item_subtitle_textview" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textSize="14sp" 
      tools:text="Subtext" /> 
    </LinearLayout> 
</RelativeLayout> 

這裏的Java代碼負責更新內容。 viewHolder只是一個靜態類,包含對TextViews的引用,並保存在列表項的標記中以供查看回收。

NamedItem item = getRowItem(section, position); 
if (item != null) { 
    viewHolder.titleTextView.setText(item.getName()); 

    if (item.getSubtitle() != null) { 
     String subtitle = ((ItemInfo) item).getSubtitle(); 
     viewHolder.subtitleTextView.setText(subtitle); 
     viewHolder.subtitleTextView.setVisibility(View.VISIBLE); 
    } else { 
     viewHolder.subtitleTextView.setVisibility(View.GONE); 
    } 
} 

編輯 我做了一些更多的測試,這也發生在API 18以及19,我改變了描述的其餘部分,以反映。

回答

2

想通了。看起來像在API 18中處理ListView項目視圖的方式不像在自定義ListView項目中將RelativeLayout作爲根佈局。包裹在的LinearLayout整個佈局解決了這一問題:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:padding="5dp"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <!-- Other Views ... --> 

    </RelativeLayout> 
</LinearLayout> 

過這個來得這麼回答後嘗試這樣做:https://stackoverflow.com/a/21334982/1777839

仍然沒有解釋爲什麼雖然發生。

相關問題