2

Android UI レイアウト XML を Web サービスから文字列の形式で受け取るアプリケーションがあるとします。たとえば、次の XML 文字列を受け取ったとします...

<?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>

とにかく、この文字列をレイアウトとしてアクティビティに渡してレンダリングすることはできますか?

4

2 に答える 2

1

String コンテンツに基づいて 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);
于 2013-08-19T04:38:00.047 に答える
0

こちらのクラスの概要からわかるように、現時点では、プリコンパイルされていない xml からのレイアウト インフレーションは Android では実行できません。私は引用します:

「パフォーマンス上の理由から、ビューのインフレーションは、ビルド時に行われる XML ファイルの前処理に大きく依存しています。したがって、現在、実行時にプレーンな XML ファイルに対して XmlPullParser で LayoutInflater を使用することはできません。XmlPullParser でのみ機能します。コンパイルされたリソース (R.something ファイル) から返されます。)"

于 2014-03-10T13:11:33.840 に答える