我有以下布局:
<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的全部内容?
答案 0 :(得分:1)
AbsoluteLayout
已被弃用,无论如何,这可能是因为将ScrollView
的高度设置为fill_parent
它会获得整个布局的高度,而不考虑100dip偏移量。
考虑使用RelativeLayout
,它通常可以更有效地执行其他复杂布局(例如嵌套水平/垂直LinearLayouts)。