我想在高度 h/3 和宽度 3w/5 的布局中显示一个绝对中心的矩形框(w:屏幕宽度,h:屏幕高度)。请帮助我找到解决方案,在此先感谢。
问问题
2204 次
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 回答