2011-06-21 10 views
12

Próbowałem cały dzień, aby uzyskać to do pracy i myślę, że mogę używać RelativeLayoutCzy mogę użyć layout_weight do ustawienia RelativeLayout?

umieścić trzy przyciski po prawej stronie ekranu, ale nie skupia 30% w dół od góry .

Czy to możliwe, a jeśli tak, to jak to zrobić?

Poniżej jest mój XML, który pokazuje trzy przyciski pod siebie, ale w prawym górnym położeniu:

</RelativeLayout> 
     <LinearLayout 
     android:id="@+id/rightRelativeLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     > 
      <ImageButton 
       android:id="@+id/btn_A" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="A" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 


      /> 
      <ImageButton 
       android:id="@+id/btn_B" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:layout_weight="1" 
       android:text="B" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 

       android:layout_below="@+id/btn_A" 
      /> 
      <ImageButton 
       android:id="@+id/btn_C" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginTop="10dp" 
       android:text="C" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 

       android:layout_below="@+id/btn_B" 

      /> 
     </LinearLayout> 

[Update] Dodano ostateczną wersję pracy dla ludzi, którzy potrzebują go

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"> 

    <Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/examplegallery" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
    <RelativeLayout 
     android:id="@+id/InnerRelativeLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" > 
    <Button 
     android:id="@+id/btn_newpen_drawtext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Pen" 
    />  
    <EditText 
     android:id="@+id/etx_addtext_drawtext" 
     android:layout_width="fill_parent" 
     android:layout_toLeftOf="@+id/btn_delete_pen" 
     android:layout_toRightOf="@+id/btn_newpen_drawtext" 
     android:layout_height="wrap_content" 
     android:singleLine="true" 
     android:text="" 
    /> 
     <Button 
      android:id="@+id/btn_delete_pen" 
      android:layout_toLeftOf="@+id/btn_save_drawtext" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Del" 
     /> 
     <Button 
      android:id="@+id/btn_save_drawtext" 
      android:layout_alignParentRight="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="save" 
     /> 

    </RelativeLayout> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rightLinerLayoutL0" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_toRightOf="@+id/RelativeLayout1" 
    android:weightSum="1.0" 
    android:layout_alignParentRight="true" 
    android:orientation="vertical" 
    > 
    <LinearLayout android:layout_height="0dp" 
        android:id="@+id/rightLinerLayoutL1" 
        android:layout_weight="0.15" 
        android:layout_width="0dp"> 
    </LinearLayout> 
    <LinearLayout android:layout_height="0dp" 
        android:orientation="vertical" 
        android:id="@+id/rightLinerLayoutL2" 
        android:layout_weight="0.85" 
        android:layout_width="wrap_content"> 

     <ImageButton android:text="Button_A" 
      android:background="@android:color/transparent" 
      android:layout_height="wrap_content" 
      android:id="@+id/btn_A" 
      android:layout_width="wrap_content" 
      android:layout_gravity="right" 
      android:src="@drawable/drawer" 
      android:onClick="btnAListener"> 
     </ImageButton> 
     <ImageButton android:text="Button_B" 
      android:background="@android:color/transparent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:id="@+id/btn_B" 
      android:layout_width="wrap_content" 
      android:layout_gravity="right" 
      android:src="@drawable/drawer" 
      android:onClick="btnBListener"> 
     </ImageButton> 
     <ImageButton android:text="Button_C" 
      android:background="@android:color/transparent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:id="@+id/btn_C" 
      android:layout_width="wrap_content" 
      android:layout_gravity="right" 
      android:src="@drawable/drawer" 
      android:onClick="btnCListener"> 
     </ImageButton> 
    </LinearLayout> 
</LinearLayout > 

</RelativeLayout> 
+1

zaktualizowałem moją odpowiedź do wypełnienia w przykładzie Obiecałam :) –

Odpowiedz

7

Sekcje 2 stosu liniowego (L1, L2) o wadze 0,3 i 0,7 (i wysokości 0 dp) wewnątrz linii Lara (LinearLayout) (L0) z orientacją pionową i masą całkowitą 1,0. Umieść przyciski w układzie ważonym 0.7 (L2). To da ci 30% przewyższenia nad przyciskami.

Następnie można umieścić zawierający LinearLayout (L0) wewnątrz RelativeLayout (R0) i umieścić L0 na prawo od rodzica (R0), który ustawi całą rzecz po prawej stronie ekranu.

Edycja: Moja wersja jest prawie taka sama jak w Milde, z wyjątkiem użycia korzenia RelativeLayout, więc mogę umieścić layout_alignParentRight="true", aby upewnić się, że jest wyrównany w prawo. Jedyne, co udało mi się znaleźć, to upewnienie się, że twój pierwszy LinearLayout ma wysokość fill_parent, więc twój spacer naprawdę stanowi 30% ekranu.

<?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"> 
    <LinearLayout android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="wrap_content" android:weightSum="1.0" android:layout_alignParentRight="true"> 
     <LinearLayout android:layout_weight="0.3" android:layout_height="0dp" android:layout_width="0dp" /> 
     <LinearLayout android:layout_weight="0.7" android:layout_height="0dp" android:layout_width="wrap_content" android:orientation="vertical"> 
      <Button android:text="Button 1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
      <Button android:text="Button 2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
      <Button android:text="Button 3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
     </LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 
+0

@markf Im na tym teraz dzięki – Erik

+0

@markf Zaktualizowałem moje pytanie z sugerowaną implementacją kodu. Kiedy masz czas, prosimy o komentarz. Myślę, że gdzieś jest mały błąd, ponieważ nic nie jest wyświetlane na ekranie. – Erik

+1

@Error ur brakuje RelativeLayout w twoim kodzie EDIT – Milde

0

Od tego plik xml nie daje błędu, nie oznacza, że ​​możesz używać tych atrybutów (waga, orientacja powiązana z LinearLayout) z RelativeLayout. Najpierw zapoznaj się z dokumentacją dla RelativeLayout.

+0

it'actually LinearLayout, po prostu zapomniał zmienić go z powrotem po niektóre testy. – Erik

2

Spróbuj tego:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rightLinerLayoutL0" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
    <LinearLayout android:id="@+id/rightLinerLayoutL1" android:layout_weight="0.3" android:layout_width="fill_parent"> 
    </LinearLayout> 
    <LinearLayout android:orientation="vertical" android:id="@+id/rightLinerLayoutL2" android:layout_weight="0.7" android:layout_width="fill_parent"> 
     <Button android:text="Button_A" android:layout_height="wrap_content" android:id="@+id/btn_A" android:layout_width="wrap_content" android:layout_gravity="right"></Button> 
     <Button android:text="Button_B" android:layout_height="wrap_content" android:id="@+id/btn_B" android:layout_width="wrap_content" android:layout_gravity="right"></Button> 
     <Button android:text="Button_C" android:layout_height="wrap_content" android:id="@+id/btn_C" android:layout_width="wrap_content" android:layout_gravity="right"></Button> 
    </LinearLayout> 
</LinearLayout > 

enter image description here

+0

@Milde twój kod działa idealnie i mogę dostosować pozycję Y z layout_weight do.Jeszcze raz dziękuję – Erik

+1

@Erik nie ma problemu, ale jak wspomniałem w moim EDYCIE powyżej, nie wydaje się być "prawdziwy" 30%/70%. Jest bardziej jak 20/80, ponieważ LL1 kurczy się, gdy wstawiasz przyciski w LL2 ... nie wiem dlaczego. – Milde

+0

@Milka i tak myślę, że to działa na teraz, więc mogę iść dalej. Będzie czekać na drugą opinię od @markf. Nie mam większego urządzenia, aby to przetestować, więc musi działać – Erik

Powiązane problemy