Android RelativeLayout layout_toLeftOf не работает должным образом - PullRequest
1 голос
/ 11 января 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"
    android:background="#cccccc">

     <!-- LEFT -->
    <FrameLayout 
        android:layout_marginTop="50px"
        android:layout_marginLeft="50px"
        android:layout_width="50px"
        android:layout_height="50px"
        android:background="#ff0000"
        android:id="@+id/lp" />

    <FrameLayout 
        android:layout_width="50px" 
        android:layout_height="100px" 
        android:background="#00ff00"
        android:layout_toRightOf="@id/lp"
        android:layout_alignTop="@id/lp"
        android:id="@+id/lc" />        
    <!-- END LEFT -->

    <!-- RIGHT -->
    <FrameLayout 
        android:layout_marginTop="50px"
        android:layout_marginLeft="300px"
        android:layout_width="50px"
        android:layout_height="50px"
        android:background="#ff0000"
        android:id="@+id/rp" />

    <FrameLayout 
        android:layout_width="50px" 
        android:layout_height="100px" 
        android:background="#00ff00"
        android:layout_toLeftOf="@id/rp"
        android:layout_alignTop="@id/rp"
        android:id="@+id/rc" />        
    <!-- END LEFT -->    
</RelativeLayout>

Результат:

enter image description here

То, что я ожидаю, это:

enter image description here

Почему это не работает?

Ответы [ 2 ]

1 голос
/ 11 января 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"
    android:background="#cccccc">

     <!-- LEFT -->
    <View
        android:layout_alignParentLeft="true"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="50dp"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="#ff0000"
        android:id="@+id/lp" />

    <View 
        android:layout_width="50dp" 
        android:layout_height="100dp" 
        android:background="#00ff00"
        android:layout_toRightOf="@id/lp"
        android:layout_alignTop="@id/lp"
        android:id="@+id/lc" />        
    <!-- END LEFT -->

    <!-- RIGHT -->
    <View
        android:layout_alignParentRight="true" 
        android:layout_marginTop="50dp"
        android:layout_marginRight="50dp"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="#ff0000"
        android:id="@+id/rp" />

    <View 
        android:layout_width="50dp" 
        android:layout_height="100dp" 
        android:background="#00ff00"
        android:layout_toLeftOf="@id/rp"
        android:layout_alignTop="@id/rp"
        android:id="@+id/rc" />        
    <!-- END LEFT -->    
</RelativeLayout>

Не используйте px. Используйте dip / dp (независимые пиксели). Также для создания ваших цветных блоков вам нужен только вид, однако это зависит от того, что в них происходит.

Прочтите этот урок. Я нашел его очень полезным для макетов - http://www.learn -android.com / 2010/01/05 / android-layout-tutorial / 5 /

0 голосов
/ 30 декабря 2013

от android: layout_toLeftOf определение: Позиционирует правый край этого вида слева от данного идентификатора якорного вида. Вмещает правое поле этого вида и левое поле якорного вида.

Итак, в магию ставится фиктивный вид без полей:

  <View 
    android:id="@+id/ltEdge"
    android:layout_height="match_parent"
    android:layout_width="0dp"
    android:layout_alignLeft="@id/lp"        
      />

  <View
    android:layout_width="50px" 
    android:layout_height="100px" 
    android:background="#00ff00"
    android:layout_toRightOf="@id/ltEdge"
    android:layout_alignTop="@id/lp"
    android:id="@+id/lc" /> 
...