TableLayout отлично выглядит на эмуляторе, но не на устройстве - PullRequest
0 голосов
/ 12 января 2012

Я запускаю свой код на эмуляторе с Android 2.2, и он работает нормально.Но когда я помещаю его на свое устройство (Galaxy S 2.3.3), основной экран, который должен показывать список элементов в таблице, остается пустым.Однако показаны тосты, а также заголовок с именем_приложения

. Таблица состоит из кнопки (определенной в XML) и списка элементов, загруженных из БД.

main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout android:id="@+id/TableLayoutMain"
    android:layout_width="match_parent" android:layout_height="wrap_content">
    <TableRow>
        <Button android:text="@string/add_button" android:id="@+id/add_button"
            android:layout_height="wrap_content" android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp" android:layout_width="match_parent"
            android:layout_weight="1"></Button>
    </TableRow>
</TableLayout>
</ScrollView>

А вот код:

public void showList(Cursor c){

    setContentView(R.layout.main);      
    table = (TableLayout) findViewById(R.id.TableLayoutMain);

    do {
        TableRow tr = new TableRow(this);           
        final int id = c.getInt(c.getColumnIndex(DatabaseAdapter.KEY_ROWID));
        tr.setId(id);           
        tr.setBackgroundColor(ROW_COLOR);           

        tr.setOnLongClickListener(new View.OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {

                //do stuff

                return true;
            }
        });

        tr.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //do other stuff
            }
        });                     

        TextView txt = getText(active, id, name);
        tr.addView(txt);
        table.addView(tr);          

    } while (c.moveToNext());
    c.close();
}

Я не был уверен, сработает ли смешение определений XML и программно добавляемых элементов.Но я пробовал разные комбинации и могу сказать, что они оба работают одинаково плохо.т.е. нормально на эмуляторе и плохо на устройстве.Я также создал виртуальное устройство с Android 2.3.3, где код также работает нормально ... так что я думаю, что это не может быть версия Android.Есть мысли?

1 Ответ

0 голосов
/ 14 января 2012

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

...