如何在线性布局中动态添加视图
How to add view in a linear layout dynamically
我调用了一个采用输入标签和输入的制作布局方法
public void makeLayout(String label, String inputType) {
Toast.makeText(getApplicationContext(), label + " " + inputType,
Toast.LENGTH_SHORT).show();
LayoutInflater vi = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.activity_main, null);
// fill in any details dynamically here
TextView textView = (TextView) v.findViewById(R.id.textView1);
textView.setText("your text");
// insert into main view
ViewGroup insertPoint = (ViewGroup) findViewById(R.id.AdvancedCatalogContainer);
insertPoint.addView(v, 0, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
}
现在基于输入类型参数,我想在布局 activity 主布局(任何线性布局内)中添加视图。
我多次调用此方法,但想一次显示所有视图,即动态创建整个布局时。应该有什么方法?我想添加一件事,使 main activity 的布局方法从异步任务中调用。
我需要您的宝贵建议,因为我是 android 技术的新手。
首先,你必须熟悉java(在我看来)。
1) 在XML布局中声明一个线性布局。喜欢:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/AdvancedCatalogContainer"
>
</LinearLayout>
2) 获取对该视图的引用:
private LinearLayout rootView=findViewById(R.id.AdvancedCatalogContainer);
3) 像这样声明一个方法:
public void fillLayout(LinearLayout root,TextView v){
v.setText("your text")
root.addView(v);
}
4) 在您的 onCreate 方法中或 ui 线程中的任何位置调用此方法。
... extends AsycTask<blah,blah,blah>{
onPostExecute(blah){
for(many times){
fillLayout(linearLayout,textView);
}
}
编辑
如果您想像滚动列表一样显示数据集合,请考虑改用 ListView or RecycleView。
我调用了一个采用输入标签和输入的制作布局方法
public void makeLayout(String label, String inputType) {
Toast.makeText(getApplicationContext(), label + " " + inputType,
Toast.LENGTH_SHORT).show();
LayoutInflater vi = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.activity_main, null);
// fill in any details dynamically here
TextView textView = (TextView) v.findViewById(R.id.textView1);
textView.setText("your text");
// insert into main view
ViewGroup insertPoint = (ViewGroup) findViewById(R.id.AdvancedCatalogContainer);
insertPoint.addView(v, 0, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
}
现在基于输入类型参数,我想在布局 activity 主布局(任何线性布局内)中添加视图。 我多次调用此方法,但想一次显示所有视图,即动态创建整个布局时。应该有什么方法?我想添加一件事,使 main activity 的布局方法从异步任务中调用。 我需要您的宝贵建议,因为我是 android 技术的新手。
首先,你必须熟悉java(在我看来)。
1) 在XML布局中声明一个线性布局。喜欢:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/AdvancedCatalogContainer"
>
</LinearLayout>
2) 获取对该视图的引用:
private LinearLayout rootView=findViewById(R.id.AdvancedCatalogContainer);
3) 像这样声明一个方法:
public void fillLayout(LinearLayout root,TextView v){
v.setText("your text")
root.addView(v);
}
4) 在您的 onCreate 方法中或 ui 线程中的任何位置调用此方法。
... extends AsycTask<blah,blah,blah>{
onPostExecute(blah){
for(many times){
fillLayout(linearLayout,textView);
}
}
编辑
如果您想像滚动列表一样显示数据集合,请考虑改用 ListView or RecycleView。