私はプロジェクトに取り組んでおり、GUI をスタイル シートに変換しています。私はレイアウトを使用し、次に横向き/縦向きのスタイル シート セットを使用します。コンテンツを動的に追加および削除しているため、インフレータを使用してレイアウトを膨張させます。ビュー自体は、コードがプラグインされるアプリケーションによって動的に作成および破棄されます。
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 に設定することです。これにより、レイアウト パラメータが正しくなります (一種の...)。ただし、返されるビューの内部要素にアクセスしようとすると、null ポインターが発生します。
inflate は、インフレートされたビューのスタイル要素を無視しているように思えます。この質問から:
LayoutInflater が、指定した layout_width および layout_height レイアウト パラメータを無視するのはなぜですか?
理由はわかりますが、提案されたアプローチ(上記を参照)を試みたが、スタイルシートを使用しているときにまだこのエラーが発生しているため、この場合は何の役にも立ちません。
私が試していない唯一のオプションは、値をレイアウトにハードコーディングし、プログラムで画面の向きを検出し、それに応じてレイアウトパラメーターを変更することですが、これもさまざまな電話ビルドで行う必要があり、スタイルシートの目的全体を無効にします。
誰にもアイデアはありますか?