5

高さ h/3、幅 3w/5 (w: 画面の幅、h: 画面の高さ) のレイアウトで、絶対中央に長方形のボックスを表示したい。解決策を見つけるのを手伝ってください、事前に感謝します。

4

3 に答える 3

3

重みを使用して線形レイアウトを使用して調整できます。下にサンプルコードを貼り付けました。これがお役に立てば幸いです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/transparent"
 >

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="horizontal"
>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="5"
 />
 <TextView
    android:id="@+id/desiredbox"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="TextView"
    android:layout_gravity="center"
    android:background="@color/skyblueBackground" 
    android:layout_weight="1"
    />
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="5"
 />
 </LinearLayout>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
/>

于 2013-04-24T06:00:12.927 に答える
2

クラスを拡張するカスタム ビューを作成しView、メソッドをオーバーライドしonDraw()て目的の四角形を作成します。あなたが参照することができます: Android キャンバスは、一般的なアイデアを得るために四角形を描画します。

質問が次の場合: コンテナー内にビューを配置する方法 - 親ビューのコンストラクターにこれを追加します。

    final ViewTreeObserver vto = this.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
                // here, the dimensions of the parent are available
                int containerHeight = instance.getHeight();
                int containerWidth = instance.getWidth();       

                childView.setY(containerHeight/3);
                childView.setX(containerWidth * 3 / 5);
                instance.getViewTreeObserver().removeGlobalOnLayoutListener(this);

            }       
        }
    });

instanceコンテナビューへの参照です。

于 2013-04-24T05:46:01.177 に答える