[英]Adding a LinearLayout to an existing XML
我在此處搜索了許多帖子以查找想要完成的工作,但找不到適合我的目的的答案。 (作為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#的新手。
將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");
效果 :
多虧了York Shen,我得以提出一些我使用的基本原理-總結如下:
首先將焦點設置為要在其下添加另一個線性布局的現有XML線性布局。 我使用LinearLayout dtlr = (LinearLayout)FindViewById(Resource.Id.datetimelogorow);
我的axml文件中有一個名為datetimelogorow的LinearLayout。
接下來, 定義新的線性布局: Android.Widget.LinearLayout dtr = new Android.Widget.LinearLayout(this);
使用dtr.Orientation = Orientation.Horizontal;
根據需要更改所有參數,例如方向,背景等dtr.Orientation = Orientation.Horizontal;
現在創建dtlr.AddView(dtr);
也可以像在第2步中一樣添加LinearLayout下的文本視圖,在該行中將“ LinearLayout”替換為“ TextView”。
希望這可以幫助。
再次感謝York Shen。
UTTAM
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.