我想要为给定的layout
充气,向其中的textviews
添加文字,然后动态地将此视图添加到LinearLayout
,并添加此view
多次linearLayout
。
要膨胀的观点是: -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="5dp"
android:layout_weight="1">
<TextView
android:textSize="13sp"
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="5dp"
android:layout_weight="3">
<TextView
android:id="@+id/tv2"
android:textSize="13sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:padding="5dp"
android:layout_weight="3">
<TextView
android:textSize="13sp"
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:textSize="13sp"
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
必须添加的LinearLayout
是: -
<LinearLayout
android:id="@+id/pass_info"
android:layout_below="@+id/booking_title"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
最终视图应如下所示: -
1 mark 50%
2 sam 30%
3 ava 45%
view
动态添加一个在另一个之下。我使用的代码是: -
for(int i = 0; i < getStudentCount(); i++){
LayoutInflater vi=(LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout insertPoint=(LinearLayout)findViewById(R.id.pass_info);
View v=vi.inflate(R.layout.pass_item,insertPoint,false);
TextView textView1=(TextView)v.findViewById(R.id.tv1);
TextView textView2=(TextView)v.findViewById(R.id.tv2);
TextView textView3=(TextView)v.findViewById(R.id.tv3);
TextView textView4=(TextView)v.findViewById(R.id.tv4);
textView1.setText(getRollNum(i));
// likewise for other textviews
insertPoint.addView(v);
}
添加了views
但未显示任何内容,textviews
为空。可能的原因是什么?
答案 0 :(得分:1)
代码中的问题
您的代码有关于布局膨胀和视图绑定的几个问题。您想要实现的与您的代码实现的不同。
实现您的愿望的步骤
您想要做的是:
tv1 = (TextView) findViewById(R.id.tv1);
将它们绑定到父布局)public TextView setTv1Text(String text) tv1.setText(text);
然后,在for循环中,您必须实例化新的TextClass对象。实例化后,您将获得每个TextView并设置其文本,例如:
TextsClass textsClass = new TextsClass(getContext());
textsClass.setTv1Text(getRollNum(i));
//Do it with the other textviews
insertPoint.add(textsClass);
关于您的代码的摘要
尝试按照谷歌的链接创建自定义视图,这是最佳选择,然后按照我在此处指定的步骤实现您的目标。
如果我的回答对你有帮助,请告诉我,欢呼。
答案 1 :(得分:0)
Linearlayout frameLayout = (LinearLayout ) view.findViewById(R.id.frm);
LayoutInflater inflatr = (LayoutInflater) Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflatr.inflate(R.layout.n_demoview, frameLayout, true);
这对我有用 我希望这对你有用!!