2017-05-03 89 views
-1

說我有下面的XML如何將視圖定位到兄弟的View子項的右側? Android的XML

<RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 

     <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 
      <RelativeLayout 
          android:id="@+id/child1" 
          android:layout_width="0dp" 
          android:layout_height="match_parent" 
          android:layout_weight="2"> 

       <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textSize="15sp"/> 

      </RelativeLayout> 

      <RelativeLayout 
         android:id="@+id/child2" 
         android:layout_width="0dp" 
         android:layout_height="match_parent" 
         android:layout_weight="2"> 
      </RelativeLayout> 

     </LinearLayout> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="2dp" 
      android:layout_toEndOf="@+id/child1"/> // CAN'T DO THIS need work around 

    </RelativeLayout> 

我有類似的措施。我有一個LinearLayout與一個RelativeLayout內的許多孩子,我有一個View重疊child1和child2。但我希望它只重疊兒童2.

是否有任何解決方法呢? 我可以發佈我的實際代碼,如果需要的話,有點寫在飛。

回答

0

child1與您想要在其中使用它的視圖不在同一個佈局範圍內(在「// can do do this」行)。

我建議刪除線性佈局,並在父親相對佈局中同時具有child1和child2。

+0

是的,但後來我不能通過重量分隔內部的孩子,我不得不使用硬編碼的寬度大小。 – Pants

0

這是因爲孩子不是它的兄弟姐妹,Linearlayout是它的兄弟姐妹,如果你想將它移動到右側,嘗試將一個id放在linearlayout上並在android上使用它:layout_toEndOf =「@ + id/child1」

試試這個:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout android:id="@+id/ll_sibbling_view" 
     android:background="@color/color_gray_400" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <RelativeLayout 
      android:id="@+id/child1" 
      android:background="@color/colorAccent" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="2"> 

      <TextView android:text="ABC" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="15sp"/> 

     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/child2" 
      android:background="@color/mab_blue" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="2"> 
     </RelativeLayout> 

    </LinearLayout> 

    <View android:id="@+id/v_center_horizontal" 
     android:layout_centerHorizontal="true" 
     android:layout_width="0dp" 
     android:layout_height="0dp"/> 

    <View android:layout_toRightOf="@+id/v_center_horizontal" 
     android:layout_toEndOf="@+id/v_center_horizontal" 
     android:background="@color/black" 
     android:layout_width="match_parent" 
     android:layout_height="2dp"/> 

</RelativeLayout> 
+0

正確但是這樣不會重疊child2否? – Pants

+0

那麼,我編輯了答案,但這是另一種解決方案,我希望它可以幫助你。 – jmarkstar

0

好了,所以我不得不以編程方式做到這一點。餘計算的child1列的寬度與

view.post(new Runnable() { 
      @Override 
      public void run() { 
       child1width = child1.getWidth(); 
       setMarkers(); // sets margin of View (the line) 
      } 
     }); 

,然後加入child1Width的左緣至觀。

相關問題