我正在尝试将相对布局与扩展视图的自定义类和几个按钮一起使用。这就是我最终希望它的样子:
(原谅我发的是链接而不是图片,显然我还不够酷)
目前,这是用 dp 中的高度硬编码的(参见下面的 XML),这有两个问题:
- 它只在我的 Nexus 7 屏幕上看起来可以接受,在其他设备上没有
- 两个自定义视图的 onDraw 方法仍然提供高度和宽度与设备分辨率完全匹配的画布
如果我尝试将 layout_height 设置为 wrap_content,每个自定义视图都会尝试占据整个屏幕,这似乎与要点 2 一致,但显然不是我想要的。
我想要实现的是一个具有两个自定义视图的相对布局,它看起来与图片中显示的完全一样,但会根据它所在的屏幕尺寸进行缩放,并且自定义视图画布实际上知道屏幕的一部分它坐在上面。我该怎么做呢?
编辑:这是“vs programmatic”的原因是我认为覆盖度量不会是一个糟糕的喊叫,但我不知道这将如何与 XML 交互。我也希望将布局定义放在一个地方。
我的 XML 如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TrajectoryView" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5" >
<com.sportsim.virtualcricket.view.SideProfileView
android:id="@+id/side_profile_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.sportsim.virtualcricket.view.SideProfileView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5" >
<com.sportsim.virtualcricket.view.BirdsEyeView
android:id="@+id/birds_eye_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.25"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:text="Button" />
</LinearLayout>