2016-03-24 7 views
2

カスタマイズされたリストアイテムビューを使用するカスタムリストビューアダプタがあります。カスタムリストアイテムビューには、左側にイメージビューがあり、2つのTextViewのスタックがあり、右側にメインタイトルがあり、右側にサブタイトルがあります。何が私が表示されるサブテキストがない場合は、サブタイトルが消えて、メインのテキストをスペースを埋めるようにすることです。カスタム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は、TextViewへの参照を含む静的クラスで、ビューのリサイクルのためにリスト項目のタグに保持されます。

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); 
    } 
} 

EDIT は、私はいくつかのより多くのテストを行なったし、これもAPIは18で起こっているだけでなく19として、私は説明の残りの部分はそれを反映するように変更しました。

答えて

2

これを実証しました。 ListViewアイテムビューがAPI 18 & 19で処理される方法のようなものは、カスタム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> 

SO答え:https://stackoverflow.com/a/21334982/1777839

をこれはしかしなぜ起こるかまだを説明していません。

関連する問題