2012-06-08 1 views
-1

У меня есть пара элементов списка. один работает, другой - нет, и оба они выглядят одинаково. это действительно должна быть игра «разделить разницу» в файлах XML, но я не могу, по моей жизни, понять, что не так. один из элементов списка идеален, а другой отказывается оправдывать некоторые из представлений в правой части макета, как указано в xml. вот что они кажутся с включенным кодом.Платформа Android, игнорирующая атрибут силы тяжести

^list_view_item_2.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="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:padding="5dp"> 
    <TextView 
     android:id="@+id/item_text_product" 
     android:textSize="20sp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:layout_width="0dp"/> 
    <TableLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <TableRow> 
      <TextView 
       android:id="@+id/item_text_total" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_span="2" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:id="@+id/item_text_units" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
      <TextView 
       android:id="@+id/item_text_uom" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:id="@+id/text_acog" 
       android:text="COG:" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
      <TextView 
       android:id="@+id/item_text_acog" 
       android:paddingLeft="1sp" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 

Следующий макет тот, который работает.

^inventory_child_item.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="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:padding="5dp"> 
    <TextView 
     android:id="@+id/ici_site" 
     android:textSize="20sp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:layout_width="0dp"/> 
    <TableLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <TableRow> 
      <TextView 
       android:id="@+id/ici_units" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
      <TextView 
       android:id="@+id/ici_uom" 
       android:paddingLeft="1sp" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:id="@+id/ici_total" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_span="2" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:id="@+id/ici_price" 
       android:gravity="right" 
       android:textStyle="bold" 
       android:layout_span="2" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 

ответ

1

Вам нужно установить match_parent в ListView

как:

android:layout_width="match_parent"

+0

не удержался –

+0

lul. родительский вид изменен. кризис был предотвращен. – moonlightcheese

1

MoonlightCheese,

Единственное различие, которое я могу найти в своем коде : в макете, который работает, ваш TextView с именем @+id/ici_uom имеет отступы 1sp. Ни в коей логической причине я не могу понять, почему эта одна строка вызовет какое-либо несоответствие, чего не должно быть. Вероятно, вы, вероятно, измените это значение или даже добавите его в другой список и не увидите различий в поведении. В результате я склонен полагать, что с самими ListView или их отношениями с родителями есть что-то другое.

Я говорю об этом, потому что это абсолютный факт, что ваши элементы списка :, оправдывающие право. Кажется, что ширина отключена на основе каждого элемента. Индикатор должен быть fill_parent в LinearLayout. Я бы повторно проанализировал списки и потенциально, как вы заполняете представления.

Без ваших родительских надзоров трудно точно сказать, что происходит и почему. Это связано с тем, что мы не знаем, как вы используете ListView s, если их несколько, если один из них - ListActivity, а другой - нет или даже как они вложены.

На основании разницы во внешнем виде, я предположить, что у вас есть два ListView с и для того, чтобы в дальнейшем помочь вам, мы должны были бы разметку для них и их родителей. Без разметки, вот где я вам скажу.

Надеется, что это помогает,

FuzzicalLogic

+0

ты пятно на человека. это было родителем все время. ты спас меня. – moonlightcheese

0

Я думаю, что сила тяжесть на TextViews ничего в вашем случае не означает, потому что layout_width является wrap_content, что значит, TextView будет таким большим, как ваши текст есть. Что делать, если вы попытаетесь добавить android: layout_gravity = "right" в свой TableLayout.