2012-01-19 15 views
2

私はリストビューで使用するための相対的なビューを持っています。何らかの理由で、私がlayout_heightwrap_contentに設定していても、レイアウトができるすべてのスペースを占めています。その結果、リスト内のすべての行が画面と同じ高さになります。アンドロイドのリストビューの行が完全な高さを占める

ビューに何が問題なのかよく分かりません。それはうまく動作していました。

<?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="wrap_content" 
android:background="@drawable/cloudbkg" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:src="@drawable/pay" /> 

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/imageView1" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:text="Small Text" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
</LinearLayout> 

</RelativeLayout> 

ここにgetView関数があります。

public View getView(final int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       try { 
        final JSONObject holder = getItem(position); 
        convertView = inflateView(R.layout.dumb); 
        convertView.setOnClickListener(new OnClickListener() { 
         public void onClick(View v) { 
          try { 
           Intent i = new Intent(context, Pending.class); 
           i.putExtra("id", holder.getString("_id")); 
           context.startActivity(i); 
          } catch(Throwable e){ 
           e.printStackTrace(); 
          } 
         } 
        }); 
        convertView.setOnLongClickListener(new OnLongClickListener(){ 
         public boolean onLongClick(View v){ 
          try { 
           final CharSequence[] items = {"Pay", "Delete"}; 
           AlertDialog.Builder builder = new AlertDialog.Builder(context); 
           builder.setTitle(holder.getString("service")); 
           builder.setItems(items, new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int item) { 

            } 
           }).create().show(); 
          } catch(Throwable e){ 
           e.printStackTrace(); 
          } 
          return true; 
         } 
        }); 
        TextView t = (TextView)convertView.findViewById(R.id.amount); 
        t.setText(holder.getString("currency") + holder.getString("amount")); 
        setImg((ImageView)convertView.findViewById(R.id.pic), holder.getJSONObject("to").getString("pic")); 
        t = (TextView) convertView.findViewById(R.id.time); 
        t.setText(DateUtils.getRelativeTimeSpanString(holder.getLong("time")*1000, System.currentTimeMillis(), 0, DateUtils.FORMAT_ABBREV_ALL)); 
        t = (TextView) convertView.findViewById(R.id.service); 
        t.setText(holder.getString("service")); // url, co-ords, or shop 

       } catch(Throwable e) { 
        e.printStackTrace(); 
       } 
      } 
      return convertView; 
     } 
+0

アダプターの 'getView'メソッドはどのように見えますか? –

+0

質問に追加 – Amit

答えて

1

使用する2枚の画像が大きすぎないことを確認してください。

+0

使用中の唯一のイメージは48dpx48dpに設定されています – Amit

+0

レイアウトでは2つのドロウアブルを参照しています:cloudbkgとpay – Oderik

+0

テストしましょう。 – Amit

0

ない、これは問題ですが、カスタムListActivityレイアウトを作成するとき、あなたはリストの画面レイアウトだけでなく、個々の行のレイアウトを設定する必要がある場合を確認してください。 setContentView()に渡すリソースファイルに、IDがandroid:id/listListViewオブジェクトが含まれていること、および(上記のように)適切なアダプタに行レイアウトを渡していることを確認してください。

+0

多分[** this **](http://developer.android.com/reference/android/app/ListActivity.html)は役に立ちます –

+0

私は小さなミスをしたと思いますが、私は使っていませんリストアビリティを拡張してアクティビティを拡張し、リストビューを自分で設定します。 – Amit

+0

ああ...それはやるよ。 'ListActivity'はデフォルトであなたのために' ListView'を設定していますので、自分自身を提供したくありません。カスタマイズしたい場合は、(XMLを使用している場合は) 'android:id =" @ android.id/list "属性を指定してください。そうしないと' android.R.id.list'を指定してください。あなたのコードでそれをカスタマイズしています。 –

0

行のサイズが約60dpの場合、wrap_contentには、ルートRelativeLayoutにlayout_height="60dp"を付けてください。 layout_centerVerticalを使用して、ビューを正しく整列させることができます。

これが受け入れられない場合は、さまざまな背景色を異なるビューに与えて、デバッグする方法として、どのビューがすべての領域を占めるかを確認してみてください。

+0

線形または比較的レイアウトの新しいxmlを作成すると、それは完全な高さになります – Amit

+0

高さの値をハードコーディングしましたか? – aqs

+0

は修正されているようですが、推奨される解決策ではありません。私は何が変わったのか見ようとしています。 – Amit

関連する問題