1

Array Adapter を使用したインフレーション - インフレーションされたレイアウトが画面いっぱいに表示されません。

親ビュー グループに存在するビューは、新しく膨張したレイアウトの下部に表示されます。インフレーションは全画面に収まらず、画像のように表示の問題を引き起こします。コードは正常に動作していますが、ディスプレイに問題があります。可能な解決策を提案してください。親 XML も膨張したレイアウト リスト (配列アダプター) です。

ノート

  • attachRoot=false (Inflater.inflate(R.layout.chapterlayout, parent, false)) を設定することで、レイアウトは適切にインフレートされます。
  • ArrayAdapter から ViewGroup を処理できないため、親ビューを削除できません。

膨張した XML レイアウト

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/my_background"
android:orientation="vertical" 
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="100" >

    <TextView
        android:id="@+id/ENo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="90"
        android:text="1."
        android:textColor="#0000FF"
        android:textSize="15sp"
        android:textStyle="bold" >
    </TextView>

    <TextView
        android:id="@+id/EA"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="10"
        android:paddingBottom="5sp"
        android:text="My Text"
        android:textColor="#0000FF"
        android:textSize="15sp"
        android:textStyle="bold" >
    </TextView>
</LinearLayout>

<TextView
    android:id="@+id/EE"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="My Text"
    android:textColor="#0000FF"
    android:textSize="15sp"
    android:textStyle="bold" >
</TextView>

</LinearLayout>

親 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:background="@drawable/my_background">

<TextView
    android:id="@+id/txt"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:textSize="15sp"
    android:textColor="#0000FF"
    android:textStyle="bold"
    android:background="@drawable/my_background">
</TextView>

</LinearLayout>

ジャバコード

public class MyChapterAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;

public MyChapterAdapter(Context context, String[] values) {
    super (context, R.layout.main, values);
    this.context = context;
    this.values = values;
}

static class ViewHolder { 
    TextView ENo; 
    TextView EA; 
    TextView EE;    
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder; 
    if (convertView == null) { 
        LayoutInflater li = (LayoutInflater)   
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = li.inflate(R.layout.chapterlayout, parent, false);
        holder = new ViewHolder(); 
        holder.ENo = (TextView) convertView.findViewById(R.id.ENo); 
        holder.EA = (TextView) convertView.findViewById(R.id.EA); 
        holder.EE = (TextView) convertView.findViewById(R.id.EE); 
        convertView.setTag(holder); 
   } else { 
       holder = (ViewHolder) convertView.getTag(); 
   } 

   reDesignLayout(position,  holder);
   return convertView; 

}

private void reDesignLayout(int position, ViewHolder h) {
    // TODO Auto-generated method stub

    String chapSplit[] =values[position].split("##");

       h.ENo.setText(chapSplit[0]+". "); 
       h.EA.setText(chapSplit[1]); 
       h.EE.setText(chapSplit[2]); 
    }
}
4

0 に答える 0