Próbuję użyć układu względnego z niestandardową klasą, która rozszerza widok, oraz kilka przycisków. To, co ostatecznie ma to wyglądać tak:Android - układ XML vs programowy
(wybacz mi za zamieszczenie linku zamiast obrazu, widocznie nie jestem jeszcze wystarczająco schłodzić)
Obecnie ten jest ustalony z wysokości w dp (zobacz XML poniżej), a istnieją dwa problemy z tym:
- wygląda dopuszczalne tylko na ekranie Nexusa 7, a nie innego urządzenia OnDraw
- obu widoków niestandardowych spotkali hod nadal udostępnia płótno o wysokości i szerokości, które dokładnie pasują do rozdzielczości urządzenia.
Jeśli spróbuję ustawić wartość layout_height na wartość wrap_content, każdy niestandardowy widok podejmie próbę obejrzenia całego ekranu, co wydaje się zgodne z punktem 2 , ale wyraźnie nie jest to, czego chcę.
Co chcę osiągnąć, to układ względny z dwoma niestandardowymi widokami, który wygląda dokładnie tak, jak pokazano na obrazku, ale skaluje się do rozmiarów ekranu, na którym siedzi, a niestandardowe widoki na płótno faktycznie wiedzą, jak duże część ekranu, na którym siedzi. Jak mam to zrobic?
Edycja: powodem, dla którego jest to "vs programmatyczne", jest to, że uważam, że przesłonięcie miarą nie byłoby złym okrzykiem, ale nie mam pojęcia, jak to wpłynęłoby na XML. Wolę definicję layoutu w jednym miejscu.
Moje XML jest poniżej:
<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>
Dzięki, oddam to, gdy wrócę do domu. Czy zachowa to stan przycisków (tj. Każdy z nich zajmie połowę szerokości ekranu i będzie obok siebie?) Nie jest to wielka sprawa, ponieważ jest to tylko działanie testowe, ale chciałbym dowiedz się, co mogę z tego – Imran
Ok, zmienię go tak, aby przyciski były obok siebie. Teraz powinno być dobrze. Ponownie, nie testowałem tego i ogólnie zagnieżdżone ciężary są szkodliwe dla wydajności. Możesz zastąpić LinearLayout, który jest używany do ustawiania pozycji przycisku za pomocą RelativeLayout. –
Ah nice, yeah RelativeLayout rzecz brzmi całkiem nieźle - okrzyki człowiek: D – Imran