3

在android應用程序中有沒有辦法檢索layout.xml中聲明的小部件的屬性值?是否可以獲取android layout.xml文件中聲明的小部件屬性值?

例如在我的layout.xml文件我有:

<CheckBox 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/clean_filesWithoutVideo" 
    android:checked="@{uiprefs.switchButtonEditable}" 
    android:id="@+id/checkbox_updateable" /> 

我想找回文字android:checked,比如我想要檢索"@{uiprefs.switchButtonEditable}"在運行時。

我搜索使用getResources()從活動沒有成功android.content.res.Resources類:

  • 我不能得到的XML文件流。
  • 通過Resources.getLayout()解析屬性不會恢復屬性值。

也許這個值在CheckBox情況下隱藏的地方,但使用它檢查在調試時...

注意我找不到:我想以檢索值尤其綁定文字。也許我可以通過數據綁定API檢索這個?

回答

1

每個UI組件都有它自己的getter和setter,通過它們可以檢索當前設置的屬性或設置你想要的屬性。如果這些屬性在視圖中是常見的,例如高度/寬度,則getter將在View類中可用。
在你的情況,你可以得到通過檢查屬性:

CheckBox checkbox = (CheckBox) view.findViewById(R.id.checkbox_updateable); 
boolean initialState = checkbox.isChecked(); 

在Android Studio中,你可以得到可用於特定視圖的方法。輸入var名稱(比如複選框),然後輸入點(。),它會顯示所有可用的方法。開始打字,你認爲你正在尋找,它會告訴你所有相關的方法。

UPDATE

我覺得AttributeSet是你在找什麼。你可以這樣做:

XmlPullParser parser = resources.getXml(myResource); 
AttributeSet attributes = Xml.asAttributeSet(parser); 

從DOC:

實施返回這裏,與使用上 頂部通用XmlPullParser的實施,深受檢索 預先計算的信息優化的由aapt在編譯 您的資源時生成。例如,getAttributeFloatValue(int,float) 方法返回之前存儲在已編譯的 資源中的浮點數,而不是在運行時解析最初在 XML文件中的字符串。

該接口還提供了返回 與特定XML屬性 名稱相關聯的資源標識符中包含的不可用在 正常XML文件,如getAttributeNameResource(INT)編譯XML資源的附加信息 。

+0

謝謝您回答cgr!但我的問題是:我想獲得聲明的值(我可以在layout.xml中找到的值)例如:我想獲得「@ {uiprefs.switchButtonEditable}」,而不是CheckBox的當前狀態 – TofferBreeze

+0

我想我沒有仔細閱讀這個問題。對不起。起初我以爲我認爲你不會那樣做,但我不確定。我會盡力看看是否有任何方法,並讓你知道。 – cgr

+0

我的壞!我再讀一遍,覺得我的問題很模糊。所以我編輯它來澄清一點。 Thx爲您提供幫助! – TofferBreeze

相關問題