1

是否可以以编程方式更改视图外观顺序?

例子。

                <EditText
                    android:id="@+id/edit_txt_address_location_street"
                    android:layout_width="0dip"
                    android:layout_height="36dp"
                    android:layout_marginBottom="4dp"
                    android:layout_marginRight="4dp"
                    android:layout_marginTop="8dp"
                    android:layout_weight="8"
                    android:background="@drawable/shape_edit_text"
                    android:inputType="textNoSuggestions"
                    android:textColor="@color/black"
                    android:textCursorDrawable="@null" />

                <EditText
                    android:id="@+id/edit_txt_address_location_street_nr"
                    android:layout_width="0dip"
                    android:layout_height="36dp"
                    android:layout_marginBottom="4dp"
                    android:layout_marginLeft="4dp"
                    android:layout_marginRight="4dp"
                    android:layout_marginTop="8dp"
                    android:layout_weight="2"
                    android:background="@drawable/shape_edit_text"
                    android:inputType="textNoSuggestions"
                    android:textColor="@color/black"
                    android:textCursorDrawable="@null" />

关于显示正常外观顺序的xml。

1. edit_txt_address_location_street
2. edit_txt_address_location_street_nr

对于某些情况,我必须以编程方式反转外观顺序。例如:

1. edit_txt_address_location_street_nr
2. edit_txt_address_location_street
4

2 回答 2

3

大多数(如果不是全部)xml 命令都有其相应的编程调用。假设您的意思是“更改”是在使用 xml 膨胀后添加或删除视图,那么答案是肯定的,但这并不意味着您应该这样做。

如果您想动态添加/删除视图,您最好动态创建整个布局。相信我,一旦你知道如何,它与 xml 布局相比并不难。我读过一些如果混合使用 xml 和动态布局可能会出现一些问题的地方,我无法证明这一说法,但我所做的是用 xml 填充一个空的线性布局,然后动态添加所有视图我想。

于 2013-06-11T15:04:56.870 回答
2
EditText location_street = new EditText(this);
location_street.setBackgroundResource(R.drawable.shape_edit_text);

EditText location_street_nr = new EditText(this);
location_street_nr.setBackgroundResource(R.drawable.shape_edit_text);

LinearLayout ll = (LinearLayout)findViewById(R.id.textlayout);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(location_street, lp);
ll.addView(location_street_nr, lp);
于 2013-06-11T15:12:05.090 回答