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

私はこれをコードで行うことを試みました:

@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 に答える
1

あなたが使用しTableLayoutているLinearLayout方向はに設定されていますvertical- これまでのところすべて問題ありませんlayout_height。属性に重みを使用しています。

私が見ている問題は、あなたがあなたとあなたwrap_contentの両方で使用していることです。重みの値を使用すると、使用可能なスペースを埋めるためにビューを拡張できますが、親はコンテンツを 0 + 0 + 0 にラップしています。両方の親要素の高さを に変更すると、重みの値には拡張するスペースがありますScrollViewTableLayoutmatch_parent

于 2013-02-20T10:32:19.730 に答える