Загрузить макет из XML и добавить представления

Я пытаюсь загрузить существующий макет из XML, а затем динамически создать кнопку и круг, причина, по которой я не могу включить их в XML, заключается в том, что цель состоит в том, чтобы динамически создавать круги, фактически следующий код представляет собой фрагмент кода Я хочу создать.

Я знаю, что то, как я это делаю (добавление макета), неверно, но после прочтения большого количества интернет-контента я не смог сделать это сам, потому что я прошу помощи.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_etest);
    LayoutInflater inflater;
    inflater = this.getSystemService
    (Context.LAYOUT_INFLATER_SERVICE);

    LinearLayout layout = (LinearLayout)                             
    inflater.inflate(R.layout.activity_etest ,
    null);
    LinearLayout viewGroup = layout;

    Button b1 = new Button(this); 
    b1.setText("test"); 
    viewGroup.addView(b1); 
    viewGroup.addView(new Circle(this));

    }

}

И мой класс Circle, который выходит из View и его метод onDraw() состоит из:

  ... onDraw(){

  canvas.drawCircle(x, y, radius, paint);

   }

Параметры drawCircle не имеют отношения к этому вопросу. Я определил их в другом месте.

Я также добавляю XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button12"
    android:layout_gravity="center_horizontal" />
 </LinearLayout>

1 ответ

Решение

Создать одну группу просмотра, как linearlayout в вашем xml и используя его instance добавить ваши динамические представления в этом.

activity_etest.xml

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/viewg" xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

деятельность

setContentView(R.layout.activity_etest);
Linearlayout viewgroup = (LinearLayout)findViewById(R.id.viewg);

 Button b1 = new Button(this); 
    b1.setText("test"); 
    viewGroup.addView(b1); 
    viewGroup.addView(new Circle(this));
Другие вопросы по тегам