Относительный макет, Textview не отображается - PullRequest
2 голосов
/ 14 июня 2011

Я использую этот XML, чтобы показать мой Button внизу и один TextView вверху с одним TextView прямо в середине Среднее текстовое представление охватывает весь промежуток между кнопкой и верхним текстовым представлением. Середина TextView вообще не отображается. Что не так?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/task"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks"
        />
    <Button 
        android:id="@+id/btnAddTask"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/AddTasks"
        android:layout_alignParentBottom="true" 
        />
    <TextView 
        android:id="@+id/TasksList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks" 
        android:layout_above="@id/task"
        android:layout_below="@id/btnAddTask"
        />
</RelativeLayout>

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Ваша проблема, безусловно, в том, что у вас есть текстовое представление TasksList под вашей кнопкой.Поменяйте местами значения layout_above и layout_below.Это работает для меня:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/task"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks"
        />
    <Button 
        android:id="@+id/btnAddTask"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/AddTasks"
        android:layout_alignParentBottom="true" 
        />
    <TextView 
        android:id="@+id/TasksList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks" 
        android:layout_above="@id/btnAddTask"
        android:layout_below="@id/task"
        />
</RelativeLayout>
1 голос
/ 14 июня 2011

Проблема в том, что вы изменили свой макет выше и макет ниже: попробуйте

android:layout_below="@id/task"
android:layout_above="@id/btnAddTask"

См. Скриншот.

А вот полный макет.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/task"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks"
        />
    <Button 
        android:id="@+id/btnAddTask"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/AddTasks"
        android:layout_alignParentBottom="true" 
        />
    <TextView 
        android:id="@+id/TasksList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks" 
        android:layout_below="@id/task"
        android:layout_above="@id/btnAddTask"
        />
</RelativeLayout>

enter image description here

1 голос
/ 14 июня 2011

Определенно что-то не так с тем, как вы это изложили.

У вас есть кнопка, alignParentBottom="true" ... затем для TasksList TextView она установлена ​​ниже кнопки ... в основном за пределами экрана.

Вы можете удалить ориентацию из RelativeLayout ... Относительные макеты не имеют ориентации, как у LinearLayout.

Как вы описываете ... Я не на 100% вы можете сделать это с Relative Layout. Если вы просто хотите одну вещь сверху, одну по центру, а другую - снизу, то для каждого из них лучше всего использовать один параметр макета, centerInParent, alignParentTop и alignParentBottom.

Если вы пересмотрите LinearLayout (как я полагаю, вы начали с), вы будете придерживаться вертикальной ориентации, а затем задайте им layout_weight со значениями 0, 1 и 0, убедившись, что высота была установлена ​​на wrap_content.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/task"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_weight="0" 
        />
    <TextView 
        android:id="@+id/TasksList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/tasks" 
        android:layout_weight="1" 
        />
    <Button 
        android:id="@+id/btnAddTask"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/AddTasks"
        android:layout_weight="0"
        />
</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...