在我的应用程序中,我正在尝试创建一个滚动视图,其中有3个大按钮可以填满整个屏幕。所以每个按钮的大小是屏幕的1/3。我怎样才能做到这一点? 当我使用重量时它不起作用。
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageView2"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/header_layout" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main_btn_call" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main_btn_unlock" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/imageView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main_btn_push" />
</TableRow>
</TableLayout>
</ScrollView>
答案 0 :(得分:4)
唯一的变化是在XML中添加以下属性:
android:fillViewport="true"
并且您的滚动视图宽度和高度应为match_parent
android:layout_width="match_parent"
android:layout_height="match_parent"
答案 1 :(得分:1)
您正在使用TableLayout
这是LinearLayout
,其方向设置为vertical
- 到目前为止,您使用layout_height
属性上的权重。 / p>
我发现问题是您在wrap_content
和ScrollView
中都使用TableLayout
。权重值允许您的视图展开以填充可用的空间,但您的父级正在将内容包装为0 + 0 + 0.如果您将两个父元素的高度更改为match_parent
,则您的权重值将有空间展开
答案 2 :(得分:1)
我想用代码来做这件事:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView incallImage = (ImageView) findViewById(R.id.incall_image);
final ImageView unlockImage = (ImageView) findViewById(R.id.unlock_image);
final ImageView pushImage = (ImageView) findViewById(R.id.push_image);
final ScrollView scrollViewMain = (ScrollView) findViewById(R.id.scroll_view_main);
scrollViewMain.post(new Runnable() {
@Override
public void run() {
scrollMainHeight = scrollViewMain.getHeight();
LinearLayout.LayoutParams layoutParams = new
LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, scrollMainHeight / 3);
incallImage.setLayoutParams(layoutParams);
unlockImage.setLayoutParams(layoutParams);
pushImage.setLayoutParams(layoutParams);
}
});
}
如果有人在xml中找到了这样做的方法,那就太棒了! 谢谢!