滚动视图内的权重

时间:2013-02-20 10:11:55

标签: android scrollview

在我的应用程序中,我正在尝试创建一个滚动视图,其中有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>

3 个答案:

答案 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_contentScrollView中都使用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中找到了这样做的方法,那就太棒了! 谢谢!