Android - ListViews внутри tableLayout - PullRequest
       64

Android - ListViews внутри tableLayout

0 голосов
/ 10 февраля 2012

Я пытаюсь создать и приложение, которое показывает организованные данные, поэтому я думаю, что в принципе TableLayout было бы хорошей идеей, просто держать их в строках, поэтому мне интересно, какой правильный способ сделатьЭто?У меня есть это в моем 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:orientation="vertical" >

    <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TableRow>
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="@string/hello" >
             </TextView>

            <ListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="233dp"
                android:layout_marginTop="44dp" >
            </ListView>
        </TableRow>
    </TableLayout>

</LinearLayout>

, просто теги TableLayout и тег TableRow отображают предупреждение:

"This TableLayout layout or its LinearLayout parent is possibly useless"

, поэтому я понимаю,не поднимает TableLayout.Как я могу это исправить?Есть ли другой способ сделать это легко?

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

, так что я понимаю, что не подбираю раскладку стола.Как я могу это исправить?Есть ли другой способ сделать это легко?

Не совсем, рендерер равен с учетом TableLayout, но потому что инструмент lint обнаружил, что у вас есть два представления, когдавам нужен только один (A LinearLayout и TableLayout), он предупреждает вас, что вам следует удалить один из этих макетов, поскольку это повысит производительность, но не повлияет на функциональность страницы.

Я добавлю, у вас есть TableLayout только с одной строкой.TableLayout разработаны, чтобы позволить их содержимому форматировать столбцы на основе всех их строк.С одной строкой TableLayout и Row вместе действуют как LinearLayout:

<LinearLayout>
    <LinearLayout>
        <ListView>
        <TextView>

Поскольку ваш TableLayout не добавляет никакого дополнительного макета, в этом случае он устареет, и вы получите увеличение ресурса от его удаления.и изменив orientation LinearLayout на horizontal.

Если вы планируете добавить еще TableRow позже, вам следует вместо этого удалить LinearLayout по той же причине - это будетзатем станьте представлением, не добавляющим дополнительную информацию: ваш макет таблицы будет полностью отвечать за макет, так что вы можете также сделать его родителем файла макета (не забудьте добавить атрибут xmlns:android="http://schemas.android.com/apk/res/android" к нему, если вы это сделаете.)

1 голос
/ 12 февраля 2012

В общем, я видел более сильное предупреждение:

Этот макет LinearLayout или его родительский объект RelativeLayout бесполезен

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

0 голосов
/ 10 февраля 2012

1) там написано возможно , поэтому избегайте делать выводы, поверьте себе, молодой падаван! Но да, родитель тоже выглядит бесполезным для меня:)

2) Использование макета таблицы вне вашего ListView не приведет к изменению макета строк в списке, если это то, чего вы хотите достичь.

Возможно, вы видели это, но страница Developers предлагает действительно хороший учебник , который поможет вам создать хорошую базу для вашего ListView (в этом примере используется ListActivity). Затем вы можете изменить расположение строк, используя TableLayout ... и т. Д.

...