2017-05-25 2 views
0

Ich werde die Benutzeroberfläche meiner Anwendung von Code hinter setzen, aber es wurde mit einem bizarren Problem konfrontiert, die mich völlig gestoppt hat. Ich habe ein lineares Layout innerhalb der Aktivität, die einige Elemente enthalten soll (andere lineare Layouts), so dass ich eine Art Menü haben kann. Das erste lineare Layout wird als Container betrachtet und seine Kinder sind die Schaltflächen. Das Problem ist, nur die erste Schaltfläche wird im Container angezeigt und die anderen werden ignoriert!Das Aussehen von Android-Aktivität programmgesteuert festlegen

Um dieses Ziel zu erreichen, habe ich zuerst einige Tags in der XAML-Datei codiert. Ich habe eigentlich die Grundstruktur des Menüs codiert.

<!--Menu Container!--> 
    <LinearLayout 
     android:id="@+id/TopMenueHolder" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_weight="1" 
     android:layout_height="0dp" 
     android:background="@android:color/white"> 
     <!-- Buttons--> 
     <LinearLayout 
      android:id="@+id/MenueButton1" 
      android:orientation="vertical" 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:background="@android:color/darker_gray" 
      android:layout_gravity="left" /> 
     <LinearLayout 
      android:id="@+id/MenueButton2" 
      android:orientation="vertical" 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:background="@android:color/white" 
      android:layout_gravity="left" />etc 

Dann habe ich versucht, ihre Eigenschaften von Code hinter zu setzen.

private void SetTopMenueStyle() 
     { 
      var buttonWidth = Convert.ToInt16(ScreenWidth/5); 
      var menueButtonsList = new List<int> 
      { 
       Resource.Id.MenueButton1, 
       Resource.Id.MenueButton2, 
       Resource.Id.MenueButton3, 
       Resource.Id.MenueButton4, 
       Resource.Id.MenueButton5 
      }; 

      foreach (var buttonId in menueButtonsList) 
      { 
       var button = FindViewById(buttonId) as LinearLayout; 
       if (button != null) 
       { 
        var layoutParams = new LinearLayout.LayoutParams(buttonWidth,ViewGroup.LayoutParams.MatchParent); 
        button.LayoutParameters = layoutParams; 
        button.Click += menueButton_Click; 
       } 
      } 
     } 

Diese Methode wird in der Oncreate Methode aufgerufen. Laut meinen Android-Studien wurde es in die richtige Position gebracht. Ich debuggte auch die Quelle und stellte fest, dass der Code die Eigenschaften des gesamten internen Elements (Breite und Höhe) gut angepasst hatte. Also, wo liegt das Problem?

Antwort

0

Es scheint, das einzige, was ich tun muss, ist, sowohl die Eltern- als auch die Kinderorientierung in die Horizontale zu ändern, da diese Tasten den Bildschirm über die X-Achse einnehmen werden.

<LinearLayout 
     android:id="@+id/ButtonsHolder" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:background="@android:color/holo_blue_light" 
     android:layout_weight="1"> 
     <LinearLayout 
      android:id="@+id/LoginButton" 
      android:orientation="horizontal" 
      android:background="@android:color/white" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" />etc 
Verwandte Themen