андроид: две проблемы с помощью Tablerow+TextView в Tablelayout

Я использую Tablerow+TextView для создания простого представления для сообщений в блоге и их ответов. В каждом TableRow я вставил TextView. Теперь у меня есть две проблемы:

  1. Текст, который длиннее, чем экран, автоматически не обернет, чтобы быть мультилинией. Это дизайном TableRow? Я уже установил tr_content.setSingleLine(false); [обновление] Это было обращено, я думаю, что должен изменить Fill_parent, чтобы быть Wrap_content в textView.tr_author_time.setLayoutParams(new LayoutParams( LayoutParams.**WRAP_CONTENT**, LayoutParams.WRAP_CONTENT));

  2. Таблица не прокрутит как ListView. Мои строки являются больше, чем размер экрана. Я ожидаю, что таблица могла быть прокручена вниз для просмотра точно так же, как ListView. Это возможно?

Вот мой код:

    TableLayout tl = (TableLayout) findViewById(R.id.article_content_table);
        TextView tr_title = new TextView(this);
    TextView tr_author_time = new TextView(this);
    TextView tr_content = new TextView(this);
    TableRow tr = new TableRow(this);

    for(int i = 0; i < BlogPost.size(); i++){
        try{
        // add the author, time
        tr = new TableRow(this);
        /////////////////add author+time row
        BlogPost article = mBlogPost.get(i);
        tr_author_time = new TextView(this);
        tr_author_time.setText(article.author+"("+
                article.post_time+")");
        tr_author_time.setTextColor(getResources().getColor(R.color.black));
        tr_author_time.setGravity(0x03);
        tr_author_time.setLayoutParams(new LayoutParams( 
                    LayoutParams.FILL_PARENT, 
                    LayoutParams.WRAP_CONTENT)); 
        tr.addView(tr_author_time); 
        tl.addView(tr,new TableLayout.LayoutParams( 
                LayoutParams.FILL_PARENT, 
                LayoutParams.WRAP_CONTENT));
        ////////////////////// then add content row
        tr = new TableRow(this);            
        tr_content = new TextView(this);
        tr_content.setText(article.content);
        tr_content.setSingleLine(false);
        tr_content.setGravity(0x03);
        tr_content.setLayoutParams(new LayoutParams( 
                    LayoutParams.FILL_PARENT, 
                    LayoutParams.WRAP_CONTENT));            
        tr.addView(tr_content);       
         tr.setBackgroundResource(R.color.white);
            tl.addView(tr,new TableLayout.LayoutParams( 
                    LayoutParams.FILL_PARENT, 
                    LayoutParams.WRAP_CONTENT));

    }   
8
задан Yang 21 April 2010 в 17:20
поделиться

1 ответ

На самом деле это не полный ответ, но похоже, что вы делаете это нелегко.

Вместо того, чтобы создавать свои TableRows вручную, вы должны настроить их в xml следующим образом:

tablerow.xml:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:id="@+id/content"
        android:singleLine="false"
        android:textAppearance="@style/someappearance" />
</TableRow>

Перед циклом получите ссылку на LayoutInflater:

LayoutInflater inflater = getLayoutInflater();

Затем внутри вашего цикла , создайте экземпляр tablerow с помощью LayoutInflater:

TableRow row = (TableRow)inflater.inflate(R.layout.tablerow, tl, false);
TextView content = (TextView)row.findViewById(R.id.content);
content.setText("this is the content");

tl.addView(row);

Это позволит вам установить макет, внешний вид, параметры макета в xml, что значительно упростит чтение и отладку.

Для проблемы с прокруткой вам нужно добавить TableLayout в ScrollView. Примерно так в вашем xml:

<ScrollView>
    <TableLayout android:id="@+id/arcitle_content_table" />
</ScrollView>
14
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: