我试图在点击按钮时动态地将元素添加到现有的xml布局中。根据用户单击按钮的次数,应将多个项目添加到现有xml中。我认为使用布局inflater是一种很好的技术,但我无法做到。任何帮助将不胜感激。
谢谢!这是我的代码:
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_layout_id">
</LinearLayout>
layout_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout_item_id">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
java文件:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LinearLayout mainLayout = (LinearLayout)findViewById(R.id.main_layout_id);
View view = getLayoutInflater().inflate(R.layout.layout_item, mainLayout,false);
mainLayout.addView(view);
Button b=(Button) findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context c=getApplicationContext();
TextView tvv=new TextView(c);
tvv.setText("textview");
mainLayout.addView(tvv);
}
});
}
答案 0 :(得分:1)
按钮属于layout_item.xml
。
所以改变这个
Button b=(Button) findViewById(R.id.button1);
要
Button b=(Button) view.findViewById(R.id.button1);
您应该使用活动上下文
Context c=ActivityName.this;
示例:
public class MainActivity extends Activity {
Fragment fr;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout mainLayout = (LinearLayout)findViewById(R.id.main_layout_id);
View view = getLayoutInflater().inflate(R.layout.layout_item, mainLayout,false);
mainLayout.addView(view);
final LinearLayout ll = (LinearLayout)view.findViewById(R.id.ll);
Button b=(Button) view.findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context c=MainActivity.this;
TextView tvv=new TextView(c);
tvv.setText("textview");
ll.addView(tvv);
}
});
}
}
layout_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_item_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/ll"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
卡扣