4

listView には、listView と同じ高さにしたい行が 1 つあります (フルスクリーンだとしましょう)。

行のレイアウトは次のようになります

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/error" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:minHeight="30dip"
        android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>

そして、アダプターの getView は

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   View row = inflater.inflate(R.layout.myrow, parent, false);
   return row;
}

Bu 行は の場合と同じように表示されますandroid:layout_height="wrap_content"

レイアウトプレビューは、親であり、私が使用している行を示していinflate(R.layout.myrow, parent, false);ます.listViewは確かにフルスクリーンで表示され、行は画像+ textViewと同じ高さです.

私は重要な何かを逃していますか?

4

3 に答える 3

5

私は解決したと思う同様の問題を抱えていたので、ここに報告します。

ListView にはより多くの行がありますが、行の高さをリストビューと同じにしたいので、レイアウトの残りのスペースをすべて占有します。私の行は、1 つの ImageView だけで構成されています。次のような問題がありました。

-小さな画像を拡大してすべてのスペースを占有させたい -大きな画像は行の高さを超えて拡大してはならない

私が間違いを犯した場合は、ここにメモを残してください。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.9"
    android:gravity="center"
    android:orientation="vertical">
    <ListView 
        android:id="@id/lay_main_firma_objekti"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center">
    </ListView>      
</LinearLayout>   

行のレイアウト:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center">       
  <TextView
      android:id="@+id/xx"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>  
    <ImageView              
        android:id="@id/imageView_obj"
        android:contentDescription="@string/objektDesc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignLeft="@id/xx"
        android:layout_alignTop="@id/xx"
        android:layout_alignRight="@id/xx"
        android:layout_alignBottom="@id/xx"
        android:scaleType="fitXY"
        android:src="@drawable/custom_prazno" />                    
</RelativeLayout>

次に、アダプターの getView で重要なことは、

convertView.setMinimumHeight(parent.getMeasuredHeight());
ImageView slika=(ImageView)v.findViewById(R.id.imageView_obj);    
slika.setMinimumHeight(parent.getMeasuredHeight());
TextView xx=(TextView)v.findViewById(R.id.xx);
xx.setHeight(parent.getMeasuredHeight());

そうだと思います。h番目

于 2013-04-14T07:23:15.523 に答える
3

1 行だけを含む ListView が必要な特定の理由があるかどうか疑問に思っていますか? ListView の代わりに RelativeLayout を直接使用するのではなく、

于 2012-10-25T14:10:53.033 に答える
0

行の高さをハードコーディングすることになりました。minimumHeight に設定した後の相対的なレイアウトに問題があるため、重力を中心にした LinearLayout に置き換えました。

Android にその仕事をさせ、ハードコードを最小限に抑えるより良い解決策があれば教えてください。

于 2012-10-25T15:12:24.197 に答える