在AbsoluteLayout上部分缺少ScrollView中的内容问题

时间:2011-02-03 10:50:05

标签: android

我有以下布局:

<AbsoluteLayout android:layout_width="fill_parent"
    android:id="@+id/absoluteLayout1" android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:layout_width="fill_parent" android:layout_x="0dip"
        android:id="@+id/textView1" android:layout_height="wrap_content"
        android:text="Hello" android:layout_y="0dip"></TextView>
    <ScrollView android:layout_x="0dip" android:layout_y="100dip"
        android:id="@+id/ScrollView01" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:scrollbars="vertical">

        <LinearLayout android:id="@+id/LinearLayout01"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:layout_weight="0" android:orientation="vertical"
            xmlns:android="http://schemas.android.com/apk/res/android">

        </LinearLayout>

    </ScrollView>

</AbsoluteLayout>

还有一个简短的代码:

public class LayoutTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout  linerLayout=(LinearLayout)findViewById(R.id.LinearLayout01);

        for (int i=1;i<=20;i++) {
            Button b=new Button(this);
            b.setText("Button "+i);
            linerLayout.addView(b,0);
        }

    }
}

我的问题是:我没有看到我生成的最后两个按钮!

我发现这是因为ScrollView的Y值为:android:layout_y =“100dip”。

100像素与我看不到的完全相同。

如果我在高度为100像素的按钮后放置一个空视图:

<ScrollView android:layout_x="0dip" android:layout_y="100dip"
        android:id="@+id/ScrollView01" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:scrollbars="vertical">

        <LinearLayout android:id="@+id/LinearLayout01"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:layout_weight="0" android:orientation="vertical"
            xmlns:android="http://schemas.android.com/apk/res/android">

            <TextView android:layout_width="fill_parent" android:text=""
                android:id="@+id/TextViewGap" android:layout_height="100px"
                android:background="#ff0000"></TextView>
        </LinearLayout>

    </ScrollView>
然后我看到每个按钮。如果我为TextView设置101像素,那么我会在屏幕底部看到一条红线。

我的问题是:为什么在AbsoluteLayout上有Y偏移时,我看不到ScrollView的全部内容?

1 个答案:

答案 0 :(得分:1)

AbsoluteLayout已被弃用,无论如何,这可能是因为将ScrollView的高度设置为fill_parent它会获得整个布局的高度,而不考虑100dip偏移量。

考虑使用RelativeLayout,它通常可以更有效地执行其他复杂布局(例如嵌套水平/垂直LinearLayouts)。