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?