gpt4 book ai didi

Android : inflate() ignoring utilizing root layout width/height defined in style sheets. 二进制 XML 错误

转载 作者:行者123 更新时间:2023-11-29 14:28:13 28 4
gpt4 key购买 nike

我正在处理一个项目,我正在将 GUI 转换为样式表。我使用布局,然后使用一组横向/纵向样式表。我使用充气器来充气布局,因为我正在动态添加和删除内容,并且 View 本身是由我的代码插入的应用程序动态创建和销毁的。

myView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.bearing_layout, parentView, false);

错误:Java.Lang.RuntimeException:二进制 XML 文件,第 2 行:您必须提供 layout_width 属性。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/bearing_overall_layout">
<LinearLayout
style = "@style/bearing_header_layout">
<TextView android:id="@+id/header"
style = "@style/bearing_header"
android:background="@drawable/transparentbackground"
android:text="@string/bearing_title" />
</LinearLayout>
<RelativeLayout style="@style/BearingSelectListContainer"
android:id="@+id/top_view">
<LinearLayout
style="@style/BearingSelectList_linear_layout">
<TextView style="@style/BearingSelectListTitle"
android:id="@+id/title"
android:text="@string/bearing_title" />
<ScrollView android:id="@+id/listScroller"
style="@style/bearing_list_scroller">
<LinearLayout
style="@style/bearing_scroll_list_linear_layout" >
<LinearLayout android:id="@+id/pointList"
style="@style/bearing_point_list">
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<Button style="@style/BearingSelectListButton" android:id="@+id/view" android:text="@string/view_button" />
<Button style="@style/BearingSelectListButton" android:id="@+id/my_loc" android:text="@string/my_loc_button" />
<Button style="@style/BearingSelectListButton" android:id="@+id/center" android:text="@string/center_button" />
<Button style="@style/BearingSelectListButton" android:id="@+id/exit" android:text="@string/exit_button" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>

还有样式表:

<resources>
<style name="bearing_overall_layout">
<item name="android:orientation">vertical</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">300dp</item>
</style>
<style name = "bearing_header_layout">
<item name ="android:orientation">horizontal</item>
<item name ="android:layout_width">fill_parent</item>
<item name ="android:layout_height">wrap_content</item>
<item name ="android:layout_alignParentTop">true</item>
<item name ="android:gravity">center</item>
</style>
<style name="bearing_header">
<item name = "android:padding">10dp</item>
<item name = "android:textSize">18sp</item>
<item name = "android:textStyle">bold</item>
<item name = "android:layout_width">wrap_content</item>
<item name = "android:layout_height">wrap_content</item>
<item name = "android:layout_alignParentTop">true</item>
<item name = "android:gravity">center</item>
</style>
<style name="GotoMgrsInput">
<item name="android:textSize">18dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">300dp</item>
<item name="android:background">#ff000000</item>
</style>
<style name="BearingSelectMgrsInput">
<item name="android:textSize">16sp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:typeface">monospace</item>
</style>
<style name="bearing_list_scroller">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>

</style>
<style name = "bearing_scroll_list_linear_layout">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:orientation">vertical</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:gravity">center</item>
</style>
<style name = "bearing_point_list">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_marginRight">1dip</item>
<item name="android:orientation">vertical</item>
<item name="android:gravity">center</item>
</style>

<style name="bearing_BearingSelectListContainer">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:background">#a000</item>
<item name="android:layout_alignParentLeft">true</item>
<item name="android:id">@+id/top_view</item>
<item name="android:gravity">center</item>
<item name="android:layout_alignParentLeft">false</item>
</style>
<style name="BearingSelectList_linear_layout">
<item name="android:orientation">vertical</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_width">fill_parent</item>

</style>
<style name="BearingSelectListTitle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">24sp</item>
</style>
<style name="bearing_BearingSelectListButton">
<item name="android:layout_width">80dp</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="bearing_text_label">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center</item>
<item name="android:shadowColor">#ff000000</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">1</item>
<item name="android:textStyle">bold</item>
<item name="android:clickable">false</item>
<item name="android:longClickable">false</item>
</style>
<style name="bearing_item_inner_layout">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">center</item>
</style>
<style name="bearing_specific_view_layout">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">horizontal</item>
<item name="android:layout_alignParentLeft">true</item>
</style>

现在,如果我在基本布局中硬定义 android:width 和 android:height,其他一切都可以完美运行。这真的不能接受,因为我需要不同的布局值和纵向值,以及不同版本的手机。

下一个选项是将 inflate 的 rootView 设置为 null,这确实使布局参数正确(有点...),但是当我尝试访问返回的 View 的内部元素时,这会导致空指针。

在我看来,inflate 只是忽略了膨胀 View 的样式元素,从这个问题来看:

Why does LayoutInflater ignore the layout_width and layout_height layout parameters I've specified?

我明白为什么了,但是在这种情况下这对我没有任何好处,因为我已经尝试了建议的方法(见上文),但在使用样式表时我仍然遇到此错误。

我没有尝试过的唯一选择是将值硬编码到布局中,然后以编程方式检测屏幕的方向并相应地更改布局参数,但这同样需要为各种手机版本完成似乎违背了样式表的全部目的。

有人有什么想法吗?

最佳答案

我在搜索为什么我的 TextView 没有正确增加 xml 参数时遇到了这个问题。与作者的解决方案不同,我必须使用将我的 TextView 添加到的父 LinearLayout 的名称。

TextView myTextView = (TextView) myInflater.inflate(R.layout.my_textview_xml, myLinearLayout, false);

这个视频对解决问题很有帮助:

http://www.youtube.com/watch?v=1Y0LlmTCOkM

关于Android : inflate() ignoring utilizing root layout width/height defined in style sheets. 二进制 XML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960673/

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