如何动态添加线性布局中的视图

时间:2015-06-25 10:16:16

标签: android view layout-inflater

我调用了一个make layout方法,它接受输入标签和输入

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));

}

现在基于输入类型参数,我想在布局活动main中添加视图(在任何线性布局内)。 我多次调用此方法,但希望一次显示所有视图,即动态创建整个布局。应该采用什么方法?我想添加一个使得主要活动的布局方法从异步任务调用的东西。 我需要你宝贵的建议,因为我是Android技术的新手。

1 个答案:

答案 0 :(得分:4)

首先,你必须熟悉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 thread中的任何地方调用此方法。

... extends AsycTask<blah,blah,blah>{
onPostExecute(blah){

  for(many times){

    fillLayout(linearLayout,textView);

  }

}

修改

如果您想显示滚动列表等数据集合,请考虑使用ListViewRecycleView代替。