0

假设我想要一个带有 2 个复选框的自定义视图。我将开始创建这样的布局文件:

<?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="match_parent"
android:orientation="vertical" >

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

<CheckBox
    android:id="@+id/checkBox2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

</LinearLayout>

然后创建一个扩展 FrameLayout 的视图,使用 layout-inflator 添加布局:

mInflate.inflate(R.layout.foo, this, true);

我对这种方法的问题是我嵌套了 2 个布局,只是为了获得一个带有 2 个复选框的非常基本的视图。由于我目前正在处理一个非常复杂的布局,因此我正在寻找一种方法来避免在使用布局充气器时避免不必要的布局嵌套。

4

2 回答 2

1

动态创建复选框:

CheckBox checkBox1 = new CheckBox(this); // or getActivity() depending on code context
CheckBox checkBox2 = new CheckBox(this);
checkBox1.setText("CheckBox");
etc.
frameLayout.addView(child1);
frameLayout.addView(child2);
于 2012-04-30T16:44:31.247 回答
1

您可以merge在 xml 布局中使用该标签,然后对其进行膨胀:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

<CheckBox
    android:id="@+id/checkBox2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

</merge>

FrameLayout可能不是您布局的最佳解决方案,因为它会将视图堆叠在另一个之上。

于 2012-04-30T16:49:33.503 回答