Android:可以通过编程方式更改视图

时间:2013-06-11 14:56:41

标签: java android android-layout android-edittext

是否可以通过programmaticaly更改视图外观顺序?

实施例。

                <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 about显示正常的外观顺序。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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);