我要从代码中设置我的应用程序的用户界面,但它已经面临一个奇怪的问题,这完全阻止了我。我在活动中有一个线性布局,它应该包含一些元素(其他线性布局),所以我可以有一种菜单。第一个线性布局被视为容器,其子元素是按钮。问题是, 只有第一个按钮显示在容器中而其他按钮被忽略!
为了实现这一目标,首先我在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;
}
}
}
在Oncreate
方法中调用此方法。根据我的机器人研究,它已被放置在正确的位置。我还调试了源代码,发现代码已经很好地调整了所有内部元素的属性(宽度和高度)。那么问题是什么?
答案 0 :(得分:0)
似乎我唯一需要做的就是将父级和子级方向都改为水平方向,因为这些按钮将通过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