将布局设置为ScrollView的底部?

时间:2014-01-11 12:06:36

标签: java android xml scrollview tablelayout

所以我想要一个TableLayout放在ScrollView中。但我有一个问题:

TableLayout最初为空,我通过点击按钮以编程方式向其添加TableRows。如果我将TableLayout正常放入ScrollView(例如:当我滚动,它完美地工作)时,这可以正常工作。

但我想这样做,以便TableLayout位于ScrollView的BOTTOM。因此,每次添加TableRow时,最后一个单元格将始终与父ScrollView的底部对齐。 (有点像移动聊天的工作方式 - 当你按下发送时,你的信息被放在底部而所有其他信息都被推上了。)

如果我使用android:layout_gravity="bottom"来尝试实现此目的,我将无法向上滚动,因此我无法看到任何向上推出的行屏幕。但是,我可以出于某种原因向下滚动(进入空虚),这是不可能的,因为最后TableRow应该在底部。

这是相关的XML代码(LinearLayout可能是冗余/不需要):

<?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:layout_gravity="center"    
android:background="@android:color/black"
android:orientation="vertical" >


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_gravity="center"
    android:layout_marginTop="0dp"
    android:layout_weight="0.1"
    android:orientation="horizontal" >

    <!-- 2 Buttons here -->
</LinearLayout>

<TextView
   <!-- attributes of textView> -->/>

<ScrollView
    android:id="@+id/tableScrollView"
    android:layout_width="match_parent"
    android:layout_weight="0.7"
    android:layout_height="0dip"
    android:scrollbars="none"
    android:orientation="vertical"
    android:background="@drawable/stripes_background" >

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">    

        <TableLayout
            android:id="@+id/outputTable"
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:divider="@drawable/table_divider" 
            android:showDividers="middle">    
    </TableLayout>
    </RelativeLayout>


</ScrollView>

<Button
    <!-- Button attributes --> />

</LinearLayout>

enter image description here

分频器: Divider 背景: 3

2 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/black" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_gravity="center"
        android:layout_marginTop="0dp"
        android:orientation="horizontal" >

        <!-- 2 Buttons here -->

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
        android:id="@+id/textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="uiop turn" />

    <ScrollView
        android:id="@+id/tableScrollView"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/botton_button"
        android:layout_below="@+id/textview"
        android:orientation="vertical"
        android:scrollbars="none" >

        <RelativeLayout
            android:id="@+id/relativelayout"
            android:layout_width="fill_parent"
            android:layout_gravity="bottom"
            android:layout_height="fill_parent" >

            <TableLayout
                android:id="@+id/outputTable"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:showDividers="middle" >

            </TableLayout>
        </RelativeLayout>
    </ScrollView>

    <Button
        android:id="@+id/botton_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="roll" />

</RelativeLayout>

答案 1 :(得分:0)

我尝试了这个并且它有效。 Button的代码只要我将新的TableRow添加到TableLayout tblLayout,就会滚动到底部。

btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                TableRow tbr = new TableRow(getApplicationContext());
                TextView tv= new TextView(getBaseContext());
                tv.setTextSize(80f);
                tv.setText("Item" + a++);
                tbr.addView(tv);
                tblLayout.addView(tbr);
                mScroll.post(new Runnable() { 
                    public void run() { 
                         mScroll.scrollTo(0, mScroll.getBottom());
                    } 
            });
            }
        });

它应该适用于放置Button的任何地方。无论是内部还是外部。变量a是在顶部声明的int。如果你没有得到任何东西并且编码愉快,请告诉我!