2014-06-24 120 views
8

在Android中,是否有一種簡單的方法來恢復視圖到xml中定義的狀態?恢復查看原始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> 

現在編程,能見度設置爲可見,用戶輸入文本進去,錯誤被設定.setError,現在我想只需將視圖恢復到原始狀態即可,而無需明確執行:

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

回答

0

我無法清楚地理解您的問題。無論如何我正在回答,在Onresume()中寫入條件來恢復您的操作。

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

我的問題是,是否存在一個簡單的方法來恢復視圖到原來的XML狀態,像'View.reset()'。我不問如何或在哪裏我可以編程改變它。 – wvdz

3

我不知道你是否會認爲這是一種簡單的方法,但我嘗試了以下方法。

定義要在自己的XML來恢復視圖(我試着用一個按鈕,與公開程度,文玩,...)

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" 
/> 

在您的活動加載視圖到插入點

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內容爲視圖的新實例充氣,並用新的實例替換已修改的實例。

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); 
} 

希望它可以幫助...

+0

是的..不是我想要的那麼容易,但是重新充氣視圖是完成此操作的唯一方法。對於我目前的目標來說,這隻會讓它變得更加複雜,但我可以想象,如果對視圖進行如此多的更改以至於無法跟蹤它們,這可能是一個好方法。 – wvdz