将视图还原为原始xml状态

在Android中,有没有一种简单的方法来恢复视图到XML中定义的状态?

例如,我在xml中有这个视图:

<EditText android:id="@+id/set_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:ems="10" android:visibility="gone" > </EditText> 

现在以编程方式将可见性设置为可见,用户input文本,使用.setError设置错误,现在我只想简单地将视图恢复到原始状态,而不必显式执行:

  view.setVisibility(View.GONE); view.setText(""); view.setError(null); 

Solutions Collecting From Web of "将视图还原为原始xml状态"

我不知道你是否会认为这是一个简单的方法,但我尝试了以下。

定义你想要恢复自己的XML视图(我尝试了一个button,可视化,文本,…)

button.xml

 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/adminUser2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" android:text="@string/admin_user" /> 

然后在你的主布局中定义一个插入点

 <LinearLayout android:id="@+id/buttonInsertLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" /> 

在您的活动中使用inflater将视图加载到插入点

 private Button admin; @Override protected void onResume() { super.onResume(); admin = (Button)View.inflate(UserLoggin.this, R.layout.button, null); ViewGroup insert = (ViewGroup)findViewById(R.id.buttonInsertLayout); insert.addView(admin); // ... } 

稍后在reset()方法中,可以根据xml内容为视图的一个新实例充气,并用新的实例replace已修改的实例。

 public void resetView() { ViewGroup parent = (ViewGroup)admin.getParent(); int index = parent.indexOfChild(admin); parent.removeViewAt(index); // Inflate a fresh new View corresponding to the initial state of the view Button adminSave = (Button)View.inflate(UserLoggin.this, R.layout.button, null); parent.addView(adminSave, index); } 

希望能帮助到你…

我无法清楚地理解你的问题。 无论如何我正在回答,在Onresume()写入条件来恢复您的操作。

  Onresume(){ //write the condition //do something for your view super.onResume(); }