2012-01-19 2 views
2

У меня есть вид с релятивируемым видом для использования со списком. По какой-то причине, хотя я установил layout_height в wrap_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

Убедитесь, что два изображения, которые вы используете, не слишком велики.

+0

. Единственное используемое изображение - 48dpx48dp. – Amit

+0

. В вашем макете вы ссылаетесь на две таблицы: cloudbkg и платите – Oderik

+0

Позвольте мне проверить это. – Amit

0

Не уверен, если это вопрос, но при создании пользовательского ListActivity макета, вам необходимо установить расположение экрана в списке, а также расположение отдельной строки. Убедитесь, что файл ресурса, который вы передаете в setContentView(), содержит объект ListView с идентификатором android:id/list и что вы передаете макет строки (как вы уже размещали выше) к соответствующему адаптеру.

+0

возможно [** this **] (http://developer.android.com/reference/android/app/ListActivity.html) поможет –

+0

Я думаю, что сделал небольшую ошибку, я не использую а активная активность, а затем сама настройка списка. – Amit

+0

ahh ... это сделает это. «ListActivity» настраивает для вас «ListView» по умолчанию, поэтому вы не хотите предоставлять свои собственные. Если вы хотите настроить его, убедитесь, что вы предоставили атрибут 'android: id =" @ android.id/list "' (если вы используете XML) или предоставляете 'android.R.id.list', если вы настраивают его в вашем коде. –

0

Если вы знаете, как высока строка займет приблизительно (например: 60dp), то вместо того, чтобы давать wrap_content, введите layout_height="60dp" в корень RelativeLayout. Затем вы можете использовать layout_centerVertical, чтобы правильно совместить представления.

Если это неприемлемо, попробуйте дать разные цвета фона для разных видов в качестве способа отладки и посмотреть, какой вид отвечает за все пространство.

+0

Как только я создаю новый xml с линейным или относительно макетом, он становится полной высотой – Amit

+0

вы пробовали hardcoding значение высоты? – aqs

+0

, который, кажется, исправляет, но не является предпочтительным решением. Я пытаюсь понять, что изменилось. – Amit

Смежные вопросы