android: layout_alignParentBottom игнорируется при использовании без явной высоты макета как строки в ListView - PullRequest
13 голосов
/ 26 марта 2010

Когда я использую RelativeLayout с fill_parent или wrap_content в качестве высоты и элементом, который указывает: android:layout_alignParentBottom="true", он игнорируется и выравнивается по верху. Установка высоты RelativeLayout в явное значение заставляет его работать. Любые подсказки?

Ответы [ 4 ]

16 голосов
/ 26 марта 2010

Это похоже на ошибку в самом Android, см. http://code.google.com/p/android/issues/detail?id=1394.

Я обошел его, обернув RelativeLayout в FrameLayout и поместив выровненный вид снизу как дочерний элемент FrameLayout с android:layout_gravity="bottom". Это мешает вам ссылаться на него из RelativeLayout, поэтому вам придется обойти это (например, используя поля).

Если у кого-то есть лучший обходной путь, пожалуйста, поделитесь.

3 голосов
/ 26 марта 2010

Когда вы раздуваете макет, используйте inflate(R.layout.whatever, parent, false), где parent - это ListView. Если вы этого не сделаете (например, вы передаете null для родителя), RelativeLayout становится странным в строках списка.

0 голосов
/ 20 октября 2011

Мой взлом для этой ошибки andriod:

ViewGroup.LayoutParams lp=(ViewGroup.LayoutParams)view.getLayoutParams();
lp.height=view.getContentHeight();//hack for android bug about ViewGroup.LayoutParams.WRAP_CONTENT and android:layout_alignParentBottom="true" on landscape orientation
view.requestLayout();
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
0 голосов
/ 25 октября 2010

Мне удалось добиться правильного выравнивания, указав проблемный TextView с помощью:

android:id="@+id/must_be_bottom_left"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_below="@id/xxx"

где xxx был идентификатором TextView, который имеет android:layout_below="@id/yyy"

и yyy - это TextView, который всегда выше xxx и must_be_bottom_left.

Содержимое элементов моего списка может различаться, поэтому иногда «xxx» TextView равен View.GONE, но даже в этом случае макет работает как положено.

Я не знаю, насколько хрупок или просто недоверчив этот обходной путь. Я использую Android 1.6 и не проверял его на прямую совместимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...