如何动态控制应用程序的布局?

时间:2017-10-20 09:19:34

标签: java android xml dynamic

我的应用程序上有一个屏幕,用户应该能够添加提醒,然后使用开关单独切换它们(参见下面的屏幕截图)

我的问题是,有什么方法可以使用Java从应用程序屏幕添加/删除文本视图和切换?

我是应用开发的新手,所以如果这是微不足道或不可能的话,我很抱歉! 干杯,奥利

Screenshot of app screen

3 个答案:

答案 0 :(得分:1)

在线性布局中添加textView:

 LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout);
 TextView textView= new TextView(this);
 textView.setText("some text"); 
 ll.addView(textView); 

删除线性布局中的textView:

LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout);
TextView tV = (TextView) findViewById(R.id.textView);
ll.removeView(tV);

答案 1 :(得分:0)

最简单的情况(在我看来)是添加最大数量的内部布局(TextView +切换开关)并使用Visibility.GONE/INVISIBLE等。

如果你想动态地这样做,你可以使用RecyclerView,并拥有那些列表,你会遇到一些处理用户输入的挑战,但它并不困难。

答案 2 :(得分:0)

对于每个提醒,请展开包含TextViewSwitch的布局,并将其添加到您的父布局中。例如。您的父布局名为layoutReminders

for (Reminder reminder : reminderList) {
    View reminderView = LayoutInflater.from(this).inflate(
        R.layout.item_reminder, layoutReminders, false);

    TextView textReminder = (TextView) reminderView.findViewById(R.id.textReminder);
    Switch switchReminder = (Switch) reminderView.findViewById(R.id.switchReminder);

    textReminder.setText(reminder.getDescription());
    switchReminder.setChecked(reminder.isChecked());

    switchReminder.setOnCheckedListener(new OnCheckedListener() ...);

    layoutReminder.addView(reminderView);
}

在OnCheckedListener中,您相应地更新reminderList和布局。