RelativeLayout: невозможно назначить представление выше ссылочного представления, если используется поле - PullRequest
1 голос
/ 24 августа 2011

Я пытался поместить TextView dependent над другим TextView anchor внутри RelativeLayout, но мне не удается отобразить dependent.

Положение:
anchor будет выровнен по верху родительского элемента + некоторый marginTop , чтобы сделать его ближе к центру родителя (RelativeLayout), а dependent будет выровнен, чтобы быть выше этого anchor ,

Это не работает; когда я назначил его выше anchor, кажется, что андроид предполагает, что вершина anchor является вершиной родителя, и рисует dependent за пределами экрана (над ним).

Этого не должно быть, поскольку я использую margin вместо padding , поэтому область между вершиной RelativeLayout и anchor не должна быть частью anchor сам (я проверил размер с помощью средства просмотра иерархии). Или, может, я ошибаюсь? : S

Это простой код раскладки:

<?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="fill_parent"
    >

    <TextView android:id="@+id/anchor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="100px"
        android:text="Anchor point."
        />
    <TextView android:id="@+id/dependent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/anchor"
        android:text="Dependent."
        />

</RelativeLayout>

Желаемая:

-------------
|           |
|dependent  |
|anchor     |
|           |
-------------

Что случилось:

dependent (out of screen display)
-------------
|           |
|           |
|anchor     |
|           |
-------------

Hope
Может ли кто-нибудь помочь мне здесь? Или, возможно, помогите указать, если я сделал ошибку. Мне нужно использовать RelativeLayout в моей реальной реализации (приведенный выше пример).

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 августа 2012

Я сделал невидимую кнопку для выравнивания - это то, что вы ищете? Если вы измените поле или любой параметр местоположения кнопки привязки, это изменит местоположение зависимых элементов.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
<Button android:id="@+id/anchorbutton"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_margin="100dp"
     android:visibility="invisible"
/>

 <TextView android:id="@+id/anchor"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/anchorbutton"
  android:layout_alignLeft="@id/anchorbutton"
  android:layout_margin="10dp"
  android:text="Off Anchor button"
/>
<TextView android:id="@+id/dependent"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignLeft="@id/anchorbutton"
  android:layout_below="@id/anchor"
  android:layout_margin="50dp"
  android:text="Dependent."
0 голосов
/ 31 июля 2012

Могу я спросить, почему вы не делаете якорь в верхнем углу (верх или низ - не имеет значения), а затем строите свой вид из этого?Это то, что я делаю, и это ниже: Извините, я пока не могу опубликовать фотографии.

   <?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="fill_parent">

    <TextView android:id="@+id/anchor"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_marginTop="100dp"
      android:text="Anchor point."
    />
   <TextView android:id="@+id/dependent"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@id/anchor"
      android:layout_alignLeft="@id/anchor"
      android:text="Dependent."
    />

 </RelativeLayout>

В качестве альтернативы, если вы действительно хотите сохранить вещи такими, какие они есть, просто измените выравнивание зависимых элементов на android: layout_alignParentTop = "true".Вы также можете иметь маржу, чтобы повлиять на ее размещение.Вот код и рис.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"    >

 <TextView android:id="@+id/anchor"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentTop="true"
   android:layout_marginTop="100dp"
   android:text="Anchor point."
  />
 <TextView android:id="@+id/dependent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginTop="150dp"
    android:text="Dependent."
  />

</RelativeLayout>
...