Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式设置android活动的外观_C#_Xaml_Xamarin.android - Fatal编程技术网

C# 以编程方式设置android活动的外观

C# 以编程方式设置android活动的外观,c#,xaml,xamarin.android,C#,Xaml,Xamarin.android,我打算将我的应用程序的用户界面设置为代码隐藏,但它遇到了一个奇怪的问题,这完全阻止了我。我有一个线性布局内的活动,这是应该举行一些元素(其他线性布局),所以我可以有一种菜单。第一个线性布局被视为一个容器,其子元素是按钮。问题是,容器中只显示第一个按钮,其他按钮被忽略 为了实现这个目标,首先我在XAML文件中编码了一些标记。我实际上对菜单的基本结构进行了编码 <!--Menu Container!--> <LinearLayout android:id="

我打算将我的应用程序的用户界面设置为代码隐藏,但它遇到了一个奇怪的问题,这完全阻止了我。我有一个线性布局内的活动,这是应该举行一些元素(其他线性布局),所以我可以有一种菜单。第一个线性布局被视为一个容器,其子元素是按钮。问题是,容器中只显示第一个按钮,其他按钮被忽略

为了实现这个目标,首先我在XAML文件中编码了一些标记。我实际上对菜单的基本结构进行了编码

<!--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
然后我尝试从代码隐藏设置它们的属性

 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;
                }
            }
        }
private void SetTopMenueStyle()
{
var buttonWidth=Convert.ToInt16(屏幕宽度/5);
var menueButtonsList=新列表
{
Resource.Id.MenueButton1,
Resource.Id.MenueButton2,
Resource.Id.MenueButton3,
Resource.Id.MenueButton4,
Resource.Id.MenueButton5
};
foreach(菜单按钮列表中的变量buttonId)
{
var button=作为线性布局的FindViewById(buttonId);
如果(按钮!=null)
{
var layoutParams=新的LinearLayout.layoutParams(buttonWidth,ViewGroup.layoutParams.MatchParent);
button.LayoutParameters=layoutParams;
按钮。单击+=菜单按钮\u单击;
}
}
}

此方法在
Oncreate
方法中调用。根据我对安卓系统的研究,它被放置在正确的位置。我还调试了源代码,发现代码很好地调整了所有内部元素的属性(宽度和高度)。那么问题是什么呢

似乎我唯一需要做的就是将父级和子级方向都更改为水平方向,因为这些按钮将通过x轴占据屏幕

<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