ビューを拡張するカスタムクラスといくつかのボタンで相対レイアウトを使用しようとしています。これは私が最終的にそれをどのように見せたいかです:
(画像ではなくリンクを投稿することを許してください、どうやら私はまだ十分にクールではありません)
現在、これはdpの高さでハードコーディングされており(以下のXMLを参照)、これには2つの問題があります。
- Nexus 7の画面でのみ許容できるように見え、他のデバイスでは許容できないように見えます
- 両方のカスタムビューのonDrawメソッドは、デバイスの解像度と正確に一致する高さと幅のキャンバスを提供します
layout_heightをwrap_contentに設定しようとすると、各カスタムビューは画面全体を占有しようとします。これは、箇条書き2と一致しているように見えますが、明らかに私が望むものではありません。
私が達成したいのは、2つのカスタムビューを備えた相対レイアウトです。これは、画像に示されているとおりに見えますが、画面のサイズに合わせて拡大縮小され、カスタムビューキャンバスは実際に画面の一部の大きさを認識します。それは座っています。どうすればよいですか?
編集:これが「vsプログラマティック」である理由は、メジャーをオーバーライドすることは悪い叫びではないと思うからですが、それがXMLとどのように相互作用するかはわかりません。レイアウトの定義も1か所にまとめたいです。
私の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>