我有一个Android应用程序,我希望它有两个彼此相似的视图。 例如:
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="OK" />
和
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK" />
请注意,唯一的变化是我删除了centerHorizontal线。但这是一个简化的例子。
现在,我想创建一个应用程序,有时(使用随机函数)使用视图A,有时使用视图B.
是否可以在运行时执行此“视图切换”? 是否可以使用两个视图构建此应用程序(请注意该按钮应具有相同的ID,我不想实现两次逻辑)?
非常感谢!
答案 0 :(得分:0)
我想象的唯一方法是:
示例代码:
<强> button_a.xml:强>
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="OK" />
<强> button_b.xml:强>
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK_2" />
您的活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LayoutInflater inflater = LayoutInflater.from(this);
Button button;
if (Math.random() > 0.5) {
button = (Button) inflater.inflate(R.layout.button_a, null);
} else {
button = (Button) inflater.inflate(R.layout.button_b, null);
}
/* ...
Set listeners to the button and other stuff
...
*/
//find the view to wich you want to append the button
LinearLayout view = (LinearLayout) this.findViewById(R.id.linearLayout1);
//append the button
view.addView(button);
}
如果您希望动态发生这种情况(即不在onCreate
中,但在用户输入之后),您可以随时从布局中删除该按钮,并为随机选择的新按钮充气。
希望这有帮助!