我在这里搜索了一些帖子,想要完成我想要完成的任务,但我找不到能够适应我目的的答案。 (作为C#编程的新手,我假设我使用的C#版本有点非常新,并对语法施加了许多严格限制。但我的问题不在于此...)
我要做的是以编程方式添加到XML布局。
这是我的XML:
<LinearLayout
android:id="@+id/daterow"
android:orientation="horizontal"
android:layout_width="480dp"
android:layout_height="40dp"
android:background="@drawable/customborder"
android:padding="0dp">
<!-- <LinearLayout
android:id="@+id/ll_001"
android:orientation="horizontal"
android:layout_width="20dp"
android:layout_height="40dp"
android:background="@drawable/customborder">
<TextView
android:id="@+id/Slot_001"
android:text="00:00"
android:textSize="8dp"
android:layout_width="20dp"
android:layout_height="40dp"
android:rotation="270"
android:gravity="left|center"
android:singleLine="true"
android:maxLines="1" />
</LinearLayout> -->
我的代码段如下:
LinearLayout parentLayout = (LinearLayout)FindViewById(Resource.Id.daterow);
LinearLayout Linear1 = new LinearLayout(this);
Linear1.LayoutParameters = new LayoutParams(LayoutParams.MatchParent,LayoutParams.WrapContent);
parentLayout.AddView(Linear1);
TextView tv = new TextView(this);
tv.Id = i; // i is variable in a for loop inside of which this code is.
int qq; //THIS LINE FOR TESTING ONLY.
qq = 333; //THIS LINE FOR TESTING ONLY.
this.tv.SetText(DateTime.Now.AddMinutes(this.iSlot).ToString("HH:mm")); //THIS IS WHAT I WANT TO ACCOMPLISH EVENTUALLY
tv.SetText(qq); //THIS LINE FOR TESTING ONLY. **GIVES ERROR**
ll2.AddView(tv); //THIS LINE FOR TESTING ONLY.
最终,我想以编程方式实现XML,如“这是我的XML”一节所示。
Visual Studio不会突出显示上述语法中的任何错误。但在运行时 - 我收到以下错误:
未处理的例外:
Android.Content.Res.Resources + NotFoundException:字符串资源ID#0x14d
有人可以告诉我我犯了什么错误吗?
在您的回复中,您还可以包括哪些“使用”我应该使用您在解决方案中建议的功能 - 因为我是C#的新手。
答案 0 :(得分:0)
将LinearLayout添加到现有XML
LinearLayout parentLayout = (LinearLayout)FindViewById(Resource.Id.daterow);
//using Android.Widget;
Android.Widget.LinearLayout Linear1 = new Android.Widget.LinearLayout(this);
//using Android.Views.ViewGroup;
Linear1.LayoutParameters = new Android.Views.ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.MatchParent, Android.Views.ViewGroup.LayoutParams.WrapContent);
parentLayout.AddView(Linear1);
Android.Widget.TextView tv = new Android.Widget.TextView(this);
tv.Text = DateTime.Now.AddMinutes(1.1).ToString("HH:mm");//THIS IS WHAT I WANT TO ACCOMPLISH EVENTUALLY
Linear1.AddView(tv); //THIS LINE FOR TESTING ONLY.
Android.Content.Res.Resources + NotFoundException:字符串资源ID#0x21
当您使用tv.SetText(qq)
方法时会发生这种情况,如果您只想为TextView
设置文字,则可以使用tv.Text = qq.ToString()
。
this.tv.SetText(DateTime.Now.AddMinutes(this.iSlot)的ToString( “HH:MM”)); //这就是我想要实现的目标
像这样修改你的代码就可以达到效果:
tv.Text = DateTime.Now.AddMinutes(1.1).ToString("HH:mm");
效果:
答案 1 :(得分:0)
感谢York Shen,我能够提出一些我使用的基本原则 - 总结如下:
首先将焦点设置到您想要添加另一个线性布局的现有轴线LinearLayout。我使用LinearLayout dtlr = (LinearLayout)FindViewById(Resource.Id.datetimelogorow);
我的axml文件中有一个名为datetimelogorow的LinearLayout。
接下来定义您的新线性布局:Android.Widget.LinearLayout dtr = new Android.Widget.LinearLayout(this);
根据需要更改所有参数,例如方向,背景等(例如)dtr.Orientation = Orientation.Horizontal;
现在创建您的LinearLayout dtlr.AddView(dtr);
LinearLayout下的文本视图也可以像步骤2中那样添加,将“LinearLayout”替换为该行中的“TextView”。
希望这有帮助。
再次感谢York Shen。
乌塔姆