主要目标是使用预先制作的布局来创建可以编辑的单独模块,然后以编程方式将它们添加到根布局。为了澄清,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文件中格式化它们相同的方式以编程方式格式化视图。
答案 0 :(得分:2)
使用inflater从资源创建视图。然后你可以以编程方式添加它
context.LayoutInflater.Inflate(Resource.Layout.oneimg_twolbl, null);
答案 1 :(得分:1)
假设您的主轴上有一个LinearLayout
方向vertical
,您希望将多个视图附加到。{/ p>
获取对该“父”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
代替它,它将为你节省很多令人头疼的内存管理,滚动表演等...; - )