Android运行过程中如何动态加载布局xml文件

juckxu 2015-05-25 02:49:36
大致情况如下:
1.App运行时没有a.xml,b.xml等文件.
2.a.xml和b.xml保存在服务器中,app连接上服务器成功后获取a.xml和b.xml
我想实现的功能是:App中动态显示a.xml和b.xml的布局界面.
这样做的原因是不同的服务器中a.xml文件的内容不同。

这里有一个问题向大家请教 ,app中如何显示a.xml的布局界面?
...全文
2148 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35573129 2016-11-18
  • 打赏
  • 举报
回复
楼主最后怎么解决的,求教!
CurryLei 2015-11-17
  • 打赏
  • 举报
回复
楼主有想法么?解决了这个问题么?我现在也遇到了这样的问题
diagram98 2015-10-26
  • 打赏
  • 举报
回复
楼主,最后你是怎磨实现的?我也有类似需求。
zhjh5555 2015-05-26
  • 打赏
  • 举报
回复
For performance reasons, view inflation relies heavily on pre-processing of XML files that is done at build time. Therefore, it is not currently possible to use LayoutInflater with an XmlPullParser over a plain XML file at runtime; it only works with an XmlPullParser returned from a compiled resource (R.something file.)
juckxu 2015-05-26
  • 打赏
  • 举报
回复
按照上面的步骤试了,出现如下错误: java.lang.ClassCastException: android.util.XmlPullAttributes cannot be cast to android.content.res.XmlBlock$Parser 我的xml文件内容为: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Small Text" android:id="@+id/textView" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView3" /> </LinearLayout> 出错的代码如下: String xmlContent=上面的xml内容; XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); xmlparser = factory.newPullParser(); xmlparser.setInput(new StringReader(xmlContent)); View view1= getLayoutInflater().inflate(xmlparser,null);错误出现在这一步 错误在哪啊?
yexianghu 2015-05-26
  • 打赏
  • 举报
回复
引用 7 楼 yexianghu 的回复:
上面的方法不行那就试试这个吧 https://github.com/Avocarrot/json2view
不过不是xml的,是json格式的
yexianghu 2015-05-26
  • 打赏
  • 举报
回复
上面的方法不行那就试试这个吧 https://github.com/Avocarrot/json2view
juckxu 2015-05-26
  • 打赏
  • 举报
回复
引用 5 楼 zhjh5555 的回复:
For performance reasons, view inflation relies heavily on pre-processing of XML files that is done at build time. Therefore, it is not currently possible to use LayoutInflater with an XmlPullParser over a plain XML file at runtime; it only works with an XmlPullParser returned from a compiled resource (R.something file.)
意思就是我的这种需求,没法实现了。 还有其他的方法吗?
开发者_android 2015-05-25
  • 打赏
  • 举报
回复
引用 1 楼 yexianghu 的回复:
没有写过这样的代码,提供一个思路,楼主可以试试 LayoutInflater有一个方法
public View inflate (XmlPullParser parser, ViewGroup root)
看起来,这个方法的含义是传入一个xml dom,返回一个View 下面的方法可能可以实现你的要求 1. 通过 XmlPullParserFactory.newInstance(); 来创建一个XmlPullParser对象。 2. 调用XmlPullParser对象的setInput方法来传给它一个xml 文件流。 3. 将XmlPullParser对象传给LayoutInflater.inflate 最终生成一个View。 查文档想出来的方法,但是我完全没有试过,楼主可以试试看可不可行。具体文档楼主可以参考 http://developer.android.com/reference/android/view/LayoutInflater.html http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
这个是可以的。
juckxu 2015-05-25
  • 打赏
  • 举报
回复
引用 1 楼 yexianghu 的回复:
没有写过这样的代码,提供一个思路,楼主可以试试 LayoutInflater有一个方法
public View inflate (XmlPullParser parser, ViewGroup root)
看起来,这个方法的含义是传入一个xml dom,返回一个View 下面的方法可能可以实现你的要求 1. 通过 XmlPullParserFactory.newInstance(); 来创建一个XmlPullParser对象。 2. 调用XmlPullParser对象的setInput方法来传给它一个xml 文件流。 3. 将XmlPullParser对象传给LayoutInflater.inflate 最终生成一个View。 查文档想出来的方法,但是我完全没有试过,楼主可以试试看可不可行。具体文档楼主可以参考 http://developer.android.com/reference/android/view/LayoutInflater.html http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
谢谢,我去试试
yexianghu 2015-05-25
  • 打赏
  • 举报
回复
没有写过这样的代码,提供一个思路,楼主可以试试 LayoutInflater有一个方法
public View inflate (XmlPullParser parser, ViewGroup root)
看起来,这个方法的含义是传入一个xml dom,返回一个View 下面的方法可能可以实现你的要求 1. 通过 XmlPullParserFactory.newInstance(); 来创建一个XmlPullParser对象。 2. 调用XmlPullParser对象的setInput方法来传给它一个xml 文件流。 3. 将XmlPullParser对象传给LayoutInflater.inflate 最终生成一个View。 查文档想出来的方法,但是我完全没有试过,楼主可以试试看可不可行。具体文档楼主可以参考 http://developer.android.com/reference/android/view/LayoutInflater.html http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧