gpt4 book ai didi

android - 如何为 AttributeSet 正确编写 XML?

转载 作者:行者123 更新时间:2023-11-29 02:01:26 24 4
gpt4 key购买 nike

我想从 Misc widgets for Android platform 创建一个面板在运行时。

 XmlPullParser parser = getResources().getXml(R.xml.panel_attribute);
AttributeSet attributes = Xml.asAttributeSet(parser);
Panel panel = (Panel) new Panel(getActivity(),attributes);

panel_attribute.xml 应该是什么?

面板应该是这样的

<org.miscwidgets.widget.Panel
xmlns:panel="http://schemas.android.com/apk/res/org.miscwidgets"
android:id="@+id/topPanel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
panel:animationDuration="1000"
panel:closedHandle="@drawable/sliding_drawer_handle_minimized"
panel:content="@+id/searchparams_layout"
panel:handle="@+id/handle"
panel:linearFlying="true"
panel:openedHandle="@drawable/sliding_drawer_handle_minimized"
panel:position="top" />

最佳答案

首先,您必须在 xml 文件夹(资源文件夹的子文件夹)内的单个文件 .xml 中定义 xml 属性,就像在布局文件中一样。

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:contentDescription="@string/no_descr"
android:src="@drawable/dummy"/>

其次检索属性集不是两行代码那么简单。您将需要用 Scala 编写的以下函数。抱歉,我是 Scala 专家,但如果您坚持使用 Java,那么您可以轻松转换它!

def getAttributeSetFromXml(xmlId: Int, tagName: String, resources: Resources): AttributeSet = {
/**
* The good thing for being an internal function is that we don't need to pass tagName as a ref
*/
def getAttributeSet(xmlPullParser: XmlPullParser /*, tagName: String*/): AttributeSet = {
val state = xmlPullParser.next();
if (state == XmlPullParser.START_TAG &&
(xmlPullParser.getName contains tagName)) {
Xml.asAttributeSet(xmlPullParser);
}
else {
if (state == XmlPullParser.END_DOCUMENT) null;
else getAttributeSet(xmlPullParser /*, tagName*/);
}
}

getAttributeSet(resources.getXml(xmlId) /*, tagName*/);
}

关于android - 如何为 AttributeSet 正确编写 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com