0

多くのレイアウト (約 40) を含む複雑なプロジェクトがあり、重複を減らすために、多くのインクルードを使用しています。

私は別のレイアウト (レイアウト B) を含む layout-xlarge-land にアクティビティ レイアウトを持っています。

私のエミュレーターは XLARGE と横向きに設定されており、案の定、アクティビティ レイアウトが選択されます。どのタイトルが使用されているかを確認できるように、アクティビティのタイトルをレイアウトにハード コードしました。

問題は、レイアウト B を layout-xlarge-land に配置すると、ADT がレイアウトをプレビューせず、「レンダリングできません」というエラーが表示されることです。レイアウト B を res/layout (修飾子なし) に移動すると、機能します。

私の理解では、Android は最初に修飾されたフォルダー内のレイアウトを探し、見つからない場合は非修飾フォルダー内のレイアウトを使用します。

レイアウト B はさまざまな解像度と向きで異なる必要があるため、これは問題です。

私は何かを誤解していますか、それとも ADT/Android の癖ですか? 癖がある場合、回避策はありますか?

解像度

layout

layout-xlarge-land
    activity_layout.xml    <---- correctly loaded
    layoutb.xml            <---- "cannot render"

解像度

layout
    layoutb.xml            <---- renders OK
layout-xlarge-land
    activity_layout.xml    <---- correctly loaded

[編集] IDEA を使用していますが、IDE との関連性がわかりません。

[編集] IDEAログより

s.android.uipreview.RenderUtil - InflateException: 有効なレイアウト参照を指定する必要があります。レイアウト ID @layout/data_panel_all_views が無効です。

これにより、ADT が res/layout を調べていることが確認されます。

4

2 に答える 2

1

How Android Finds the Best-matching Resourceを見ると、複数の修飾子を提供できることと、最適なレイアウトがどのように選択されるかがわかりますactivity_layout。正しくロードされていない場合)、より少ない修飾子を適用してみて、それらincludesが機能するかどうかを確認してください。それ以外の場合は、最も汚い解決策について考えることができlayoutbます。解像度ごとに異なる を作成し、それらを同じフォルダーに保存します。activity_layoutこれは、それぞれが正しいファイルをロードすることを意味します。

幸運を!

于 2012-10-14T17:59:52.410 に答える
0

これは変だった。私がしたことの1つは、何も解決されなかったIDEAを再起動することでした。

PCを再起動していくつかのアップデートをインストールしましたが、IDEAを起動してから、期待どおりに機能しています。

Eclipseを再起動することで修正されたレイアウトに関するいくつかの問題を確認しました。共通の要素はADTなので、そこに多少のはがれがあるのではないかと思います。

于 2012-10-14T19:54:22.817 に答える