主要目标是使用预制的布局创建可以编辑的单独模块,然后以编程方式将其添加到根布局。为了澄清,several modules stuck together would look like this.我想动态创建每个由名称,日期和字母组成的可单击块。每个块的.axml代码如下:
<RelativeLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/borderLayout"
android:background="@drawable/line"
android:paddingBottom="1dp"
android:paddingTop="1dp">
<RelativeLayout
android:id="@+id/relativeLayout1"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:background="#ff2f2f2f">
<TextView
android:text="C"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_alignParentLeft="true"
android:textSize="30dp" />
<TextView
android:text="Washington"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textView1"
android:id="@+id/textView2"
android:layout_alignParentRight="true"
android:gravity="right" />
<TextView
android:text="6-8-17"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView2"
android:id="@+id/textView3"
android:gravity="right"
android:layout_alignParentRight="true" />
</RelativeLayout>
</RelativeLayout>
我遇到的主要问题是以与在.axml文件中格式化视图相同的方式,以编程方式格式化视图。
最佳答案
假设您要在其主axml中有一个LinearLayout
且方向为vertical
,并且希望将其附加到多个视图。
获取对该“父级” LinearLayout
的引用:
var linearLayoutParent = FindViewById<LinearLayout>(Resource.Id.linearLayout1);
然后在某个循环中,使用
LayoutInflater.Inflate
扩大重复的布局,使用返回的视图,并在该FindViewById
上使用View
您需要更新的每个元素,然后将该视图添加到具有递增索引的父视图中:index++;
var view = LayoutInflater.Inflate(Resource.Layout.RepeatingLayout, linearLayoutParent, false);
var letter = view.FindViewById<TextView>(Resource.Id.textView1);
letter.Text = index.ToString();
// FindViewById for textView2, textView3 and assign the text on each....
linearLayoutParent.AddView(view, index);
注意:如果您有很多重复元素,并且必须滚动它们(屏幕外),请改用
RecyclerView
,这将使您在内存管理,滚动性能等方面省去很多麻烦... ;-)关于c# - 有没有办法在Android中以编程方式创建布局的副本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53504594/