Dlaczego FOOBARZ jest rozłożony na samym dole, gdy nie ma żadnych elementów, layout_height="fill_parent"
innymi słowy, wszystkie elementy są zawijane na wysokość?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/feed_u"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_marginLeft="5dip"
android:scaleType="centerCrop"
android:drawableTop="@android:drawable/presence_online"
android:text="U" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/feed_u">
<ImageView
android:id="@+id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_minus" />
<ImageView
android:id="@+id/feed_ha"
android:layout_toLeftOf="@id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_plus" />
<TextView
android:id="@+id/feed_t"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title">
</TextView>
<TextView
android:id="@+id/feed_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Band"
android:layout_below="@id/feed_t">
</TextView>
<TextView
android:id="@+id/feed_s"
android:layout_below="@id/feed_a"
android:text="S"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
<TextView
android:id="@+id/feed_tm"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="FOOBARZ"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
</RelativeLayout>
</RelativeLayout>
android
android-layout
hunterp
źródło
źródło
hierarchyviewer
lub perspektywy Hierarchy View w Eclipse, aby określić, gdzie sprawy idą nie tak: developer.android.com/guide/developing/debugging/ ...Odpowiedzi:
Z
RelativeLayout
dokumentu:Dokumentacja klasowa
Dokładnie tak jest. RelativeLayout nie może tego zrobić.
źródło
android:layout_height="200dp"
. Pozwoliłoby ci to użyćandroid:layout_alignParentBottom="true"
<ImageView>
które za nią stoi.layout_height
zmatch_parent
Dla tych, którzy szukają rozwiązania tego problemu, tak jak ja, możesz użyć
FrameLayout
zamiastRelativeLayout
.Następnie możesz ustawić grawitację zamierzonego obiektu na dole po prawej, jak poniżej
źródło
Ustawiono RelativeLayout na,
"wrap_content"
a TextView naandroid:layout_alignParentBottom="true"
, więc automatycznie próbuje rozciągnąć RelativeLayout do dołu. Nie używaj takich zależności z układem względnym, ponieważ mogą się one liczyć jako „zależności cykliczne”.Z dokumentacji RelativeLayout :
Spróbuj wyrównać swój TextView do czegoś innego niż nadrzędny RelativeLayout, ale uważaj również na ten problem:
Zależności cykliczne, potrzebuję pomocy z dokładnym kodem
Alternatywnie spróbuj dodać bardziej wyrafinowane układy wewnętrzne.
źródło
Dobre odpowiedzi. Teraz, jeśli nie masz
layout_alignParentBottom="true"
i nadal masz ten problem, uważaj na to,android:background="@drawable/bkgnd"
gdzie bkgnd jest biggie.źródło
Nie jestem pewien, dlaczego czysty i oczywisty sposób osiągnięcia tego nie został jeszcze opublikowany. To wydajne rozwiązanie działa dla każdego widoku MyView o znanej wysokości.
Owiń swoją
RelativeLayout
wysokośćwrap_content
w FrameLayout:Zwróć uwagę, że widok na dole FrameLayout będzie nad
RelativeLayout
treścią, więc musisz dodać dopełnienie u dołu tego układu, aby go pomieścić. Jeśli chcesz, aby ten widok miał zmienną wysokość, możesz albo podklasę FrameLayout, aby dodać dopełnienie w kodzie na podstawie zmierzonej wysokości widoku, lub po prostu zmienić FrameLayout na pionowy LinearLayout, jeśli nie martwisz się o wydajność, tj. Nie jest to widok listy element lub widoki są stosunkowo lekkie.źródło
Nie używaj właściwości typu alight_Parent z widokami podrzędnymi
Możesz użyć układu ramki zamiast RelativeLayout z odpowiednią grawitacją
źródło