5

我想在高度 h/3 和宽度 3w/5 的布局中显示一个绝对中心的矩形框(w:屏幕宽度,h:屏幕高度)。请帮助我找到解决方案,在此先感谢。

4

3 回答 3

3

是的。这可以使用相对布局父级和定位为中心的另一个布局(您的框)。并且你的盒子的宽度和高度可以在java中提到,而不是在xml中。

于 2013-04-24T05:48:03.850 回答
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 canvas draw rectangle大致了解一下。

如果您的问题是:如何在容器内定位视图 - 在父视图的构造函数中添加:

    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 回答