动态创建水平和垂直滚动视图Android

时间:2014-07-22 18:09:50

标签: java android xml user-interface

在我的项目中,我设法以编辑文本和文本Views的行和列的形式显示数据库。但随着行数和列数的增加,无法查看添加的数据,它们不适合屏幕。 所以我想我需要一个水平滚动视图和一个垂直滚动视图来查看整个行和列。下面 是我的代码,请帮助我如何实现这一目标。 请提前帮助我

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="fill_parent"
android:orientation="vertical">



<TableLayout 
            android:layout_width="wrap_content"
            android:stretchColumns="0,1,2,3,4,5"
            android:id="@+id/maintable"
            android:layout_height="wrap_content"  
            android:layout_weight="1.0">

</TableLayout>
</LinearLayout>

以下是我希望显示行和列的页面代码

public class ViewActivity extends Activity {
EditText col1;
EditText col2;
TextView Id;
EditText col4;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view);
    ScrollView sv = new ScrollView(this);
    HorizontalScrollView hs =new HorizontalScrollView(this);

    TableLayout tl = (TableLayout) findViewById(R.id.maintable);

    //CREATING A LIST OF HEADINGS

TableRow tr1 = new TableRow(this);
    tr1.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT ));

    Id = new TextView(this);
    Id.setText("COL1");
    tr1.addView(Id);

    Id = new TextView(this);
    Id.setText("COL2");
    tr1.addView(Id);

    Id = new TextView(this);
    Id.setText("COL3");
    tr1.addView(Id);

    Id = new TextView(this);
    Id.setText("Rssi");
    tr1.addView(COL4);

    Id = new TextView(this);
    Id.setText("Delete");
    tr1.addView(COL5);

    Id = new TextView(this);
    Id.setText("Update");
    tr1.addView(COL6);

    hs.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));



    tl.addView(tr1,new TableLayout.LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));  

    // CREATING ROWS AND COLUMNS DYNAMICALLY


    final DBclass entry = new DBclass(ViewActivity.this);
    entry.open();
    Cursor c = entry.getAllRecords();

    int count =0;

    if(c.moveToFirst()){
        do{
            TableRow tr = new TableRow(this);
            tr.setId(count);
            tr.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT ));

            /* CODE FOR
              COLUMNS DISPLAYED IN THE FORM OF 
              EDITTEXTS AND TEXTVIEWS
            */

            tl.addView(tr, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));



            count++;
        }while(c.moveToNext());

    }

}

1 个答案:

答案 0 :(得分:0)

我很确定你可以简单地将你的TableLayout放在ScrollView中来解决这个问题。无需以编程方式添加视图,只需在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="fill_parent"
android:orientation="vertical">

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">

    <TableLayout 
            android:layout_width="wrap_content"
            android:stretchColumns="0,1,2,3,4,5"
            android:id="@+id/maintable"
            android:layout_height="wrap_content"  
            android:layout_weight="1.0">

    </TableLayout>

</ScrollView>

</LinearLayout>

请记住ScrollView是垂直的,因此您需要在其中添加Horizo​​ntalScrollView以添加水平滚动。