0

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

3 回答 3

4

唯一的变化是在您的 XML 中添加以下属性:

android:fillViewport="true"

你的滚动视图宽度和高度应该是match_parent

android:layout_width="match_parent"
android:layout_height="match_parent"
于 2014-05-22T06:07:24.717 回答
1

您正在使用TableLayout哪个LinearLayout方向设置为vertical- 到目前为止一切都很好,您在layout_height属性上使用权重。

我看到的问题是你wrap_content在你的ScrollView和你的TableLayout. 权重值允许您的视图扩展以填充可用空间,但您的父级将内容包装为 0 + 0 + 0。如果您将match_parent两个父元素的高度更改为,您的权重值将有扩展空间

于 2013-02-20T10:32:19.730 回答
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 中执行此操作的方法,那就太好了!谢谢!

于 2013-02-20T10:52:50.123 回答