2013-08-19 54 views
2

假設我有一個應用程序從Web服務以字符串的形式接收Android UI佈局XML。比方說,我收到了以下XML字符串...基於動態指定的XML呈現Android UI

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
    <EditText android:id="@+id/edit_message" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/edit_message" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/button_send" /> 
</LinearLayout> 

反正是有,我可以在通過這個字符串作爲佈局的活動,並將它呈現?

回答

1

我想你可以根據你的字符串內容創建一個XmlPullParser。然後使用從LayoutInflatoer方法:

inflate(XmlPullParser parser, ViewGroup root) 

請參閱鏈接http://developer.android.com/reference/android/view/LayoutInflater.html

事情是這樣的:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
factory.setNamespaceAware(true); 
XmlPullParser xpp = factory.newPullParser(); 
xpp.setInput(new StringReader ("YOUR XML CONTENT")); 
View rootView = inflate(xpp, null)); 
setContentView(rootView); 
0

從上類概述here,佈局通脹可以看到從非預編譯的xml在Android目前是不可能的。我引用:

「出於性能原因,查看通脹在很大程度上依賴於在構建時完成的XML文件的預處理。因此,目前不可能在運行時使用帶有XmlPullParser的普通XML文件;它只適用於從編譯資源(R.something文件)返回的XmlPullParser。「