-1

這有點簡化,使問題更容易提出。Android佈局相對於LinearLayout

我有一個垂直方向的LinearLayout。我不允許修改LinearLayout,但我想在LinearLayout中的每個元素的右側顯示一個按鈕。我試着看着ConstraintLayout和RelativeLayout,但我得到一個消息,因爲這些不是兄弟姐妹,這是行不通的。

如何在視圖位於LinearLayout內時在視圖右側顯示按鈕?

<?xml version="1.0" encoding="utf-8"?> 

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<!-- 
    DO NOT MODIFY THIS SECTION!!! 
--> 

    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_constraintTop_toTopOf="parent" 
     android:layout_constraintBottom_toBottomOf="parent" 
     android:layout_constraintLeft_toLeftOf="parent" > 

     <Button 
      android:id="@+id/a" 
      android:text="A" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/b" 
      android:text="B" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/c" 
      android:text="C" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/d" 
      android:text="D" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

<!-- 
    END OF DO NOT MODIFY SECTION!!! 
--> 

<!-- 
    PLACE THIS BUTTON TO THE RIGHT OF BUTTON C 
--> 
    <Button 
     android:id="@+id/c_aux" 
     android:text="C AUX" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_constraintLeft_toRightOf="@id/c" /> 

</android.support.constraint.ConstraintLayout> 
+1

後你已經嘗試了代碼。 –

+0

以RelativeLayout作爲根佈局,並將視圖設置爲豎直LinearLayout的Right。 –

+0

這將對齊到線性佈局的右側,而不是包含的按鈕。 – Mitch

回答

0

所以,如果你想顯示一個按鈕來視圖的右側,使用XML PARAM 機器人:layout_toRightOf = 「@ ID/someIDhere」。 但請記住,爲了使用此參數,您需要聲明和ID爲您嘗試用作參考的元素,您可以通過在任何視圖中添加此參數來執行此操作:android:id =「@ + id/newname「

這裏我們使用+符號來表示這是我們第一次聲明ID。

+0

正如我所提到的,我嘗試了這一點,並且我得到了一個錯誤,指出someID不是兄弟姐妹,所以這是行不通的。 – Mitch

0

您可以在主LinearLayout內有另一個LinearLayout。子佈局可以有水平方向。

結果:

enter image description here

像這樣:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:gravity="center_vertical" 
     android:visibility="visible" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:text="Button Left" 
      android:textColor="@android:color/white" 
      android:textAllCaps="false" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_marginStart="16dp" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="@dimen/btn_height" /> 

     <Button 
      android:text="Button Right" 
      android:textColor="@android:color/white" 
      android:textAllCaps="false" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_margin="16dp" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="@dimen/btn_height" /> 

    </LinearLayout> 

    <Button 
     android:text="Button Bottom" 
     android:textColor="@android:color/white" 
     android:textAllCaps="false" 
     android:background="@android:color/holo_blue_dark" 
     android:layout_margin="16dp" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" /> 

</LinearLayout> 
+0

正如我所提到的,我不允許修改LinearLayout,所以這個解決方案沒有解決這個問題。 :-( – Mitch