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