顶视图在ScrollView中消失了

时间:2015-08-06 04:49:33

标签: android scrollview

我正在动态地将表格布局列表添加到LinearLayout。为此,我使用ScrollView查看添加到线性布局的表列表。

下面的

是我的xml代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:background="@color/white"
tools:context=".MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="RET MASTER SITE REPORTS"
    android:paddingBottom="5dp"
    android:textColor="@android:color/black"
    android:textStyle="bold" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical"></LinearLayout>

</ScrollView>

源代码:

layout = (LinearLayout) findViewById(R.id.linearLayout);
for (int i = 0; i < 5; i++) {
        if (isColorChange) {
            displayDeviceDetails(getColor(R.color.blue), getColor(R.color.lightBlue));
        } else {
            displayDeviceDetails(getColor(R.color.orange), getColor(R.color.lightOrange));
        }
}



 //Method which i am calling from loop
 private void displayDeviceDetails(int titleColor, int cellColor) {
    TableRow row = null;
    TableLayout tableLayout = new TableLayout(this);
    tableLayout.setPadding(0, 30, 0, 0);
    for (int i = 0; i < arr.length; i++) {
        row = (TableRow) inflater.inflate(R.layout.child_views, null);
        row.setBackgroundColor(titleColor);
        TextView tvTitle = (TextView) row.findViewById(R.id.tvRowTitle);
        TextView tvText = (TextView) row.findViewById(R.id.tvRowText);
        if (i == 0) {
            tvText.setVisibility(View.GONE);
            tvTitle.setGravity(Gravity.CENTER);
            tvTitle.setTextColor(Color.WHITE);
            tvTitle.setText(arr[i]);
        } else {
            changeBgColor(cellColor);
            setBgColor(tvTitle);
            setBgColor(tvText);
            tvTitle.setGravity(Gravity.RIGHT);
            tvTitle.setText(arr[i]);
            tvText.setText(arr1[i]);
            row.setBackgroundColor(titleColor);
        }
        tableLayout.addView(row);
    }
    layout.addView(tableLayout);

}

在上面的代码中,屏幕顶部有TextView,用于显示一些文本。我在线性布局中添加了3个表格,它显示了中间的第一个表格,接着是下面的2个表格,底部有一些空白/空白屏幕。如果我增加底部屏幕空白空间增加的表数。

示例:ScrollView中有5个表,但是它将显示在第二个表中,可能来自表的开始,也可能来自表的中间,后面是第3个,第4个和第5个表,底部有空白区域滚动型。

我能够看到文本,但是我在ScrollView中添加了5个表到线性布局,当我执行它时,它将从第二个表显示,可能来自表开始或者可能来自中间,然后是第3个,第4个n第5张表空格。我附加了我的屏幕截图。

请帮帮我。

Mars coordinated service release

Top view of the screen

2 个答案:

答案 0 :(得分:1)

发现它! android:layout_gravity="center_vertical" LinearLayout中的{{1}}是罪魁祸首 只需删除它,一切都应该没问题。

答案 1 :(得分:0)

您需要将根LinearLayout更改为RelativeLayout,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:background="@color/white"
tools:context=".MainActivity">

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="RET MASTER SITE REPORTS"
    android:paddingBottom="5dp"
    android:textColor="@android:color/black"
    android:textStyle="bold" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/textView">

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:orientation="vertical"></LinearLayout>

</ScrollView>
</RelativeLayout>

我希望这有助于你