簡體   English   中英

將LinearLayout添加到現有XML

[英]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,我得以提出一些我使用的基本原理-總結如下:

  1. 首先將焦點設置為要在其下添加另一個線性布局的現有XML線性布局。 我使用LinearLayout dtlr = (LinearLayout)FindViewById(Resource.Id.datetimelogorow); 我的axml文件中有一個名為datetimelogorow的LinearLayout。

  2. 接下來, 定義新的線性布局: Android.Widget.LinearLayout dtr = new Android.Widget.LinearLayout(this);

  3. 使用dtr.Orientation = Orientation.Horizontal;根據需要更改所有參數,例如方向,背景等dtr.Orientation = Orientation.Horizontal;

  4. 現在創建dtlr.AddView(dtr);

  5. 也可以像在第2步中一樣添加LinearLayout下的文本視圖,在該行中將“ LinearLayout”替換為“ TextView”。

希望這可以幫助。

再次感謝York Shen。

UTTAM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM