Android:ランドスケープモードで爆発するが、ポートレートモードではない

StackOverflow https://stackoverflow.com/questions/8860269

  •  28-10-2019
  •  | 
  •  

質問

カラーピッカーを育てる状況があります。ポートレートモードで行われている場合、すべてが問題ありません。しかし、ランドスケープモード(画面にダイアログが収まらない)でそれを行うと、レイアウトを膨らませようとすると爆発しているようです。

ビューが画面に完全に収まらないランドスケープモードでこれを行う特別な方法はありますか?

スクリーンの不動産以外に考慮する必要がある違いはありますか?

役に立ちましたか?

解決

クレイガ、

コメントを読んだ後、XMLで異なる幅と高さが生成される方法について誤解があるようです。これは最初はよくある誤解です。したがって、ここで理解すべきことは、さまざまなオブジェクトの幅が動的であるが、オブジェクトに異なる動作を課すことです。

layout_width/layout_height一般的に

幅と高さのパラメーターは影響しません 実際 オブジェクトの幅と高さ。それらはディスプレイの幅と高さに影響します。これは、幅と高さを内容よりも小さく設定できることを意味し、コンテナよりも大きい場合は、スクロールするときに内容にアクセスできます。

多くの子供の見解は親の見解から手がかりを得るので、これはあなたが上で見ているような行動をもたらす可能性があります。ここでのトリックは、最初に何が起こっているのかを理解し、次にシステムの動作を補うことです。

match_parent/fill_parent

通常、これは、現在のビューが親からサイズを取得することを意味します。ビューがトップレベルのビューである場合、動作はわずかに変化します。これがたまたまダイアログのトップレベルビューである場合、画面のサイズまたはコンテンツのサイズ(いずれか小さい方)になります。ビューがアクティビティのトップレベルビューである場合、結果は同じですが、 見る 違う。つまり、完全なアクティビティの不透明度と背景がありますが、ビューのサイズは、画面の内容またはサイズのサイズのみです(いずれかが小さい方)。子どものサイズは、幅/高さがこの見解のそれに基づいていない限り、影響を受けません。

wrap_content

この場合、ディスプレイの高さは、すべての直接の子供のディスプレイの高さに基づいています。この動作は、階層が以外のものを使用するまで、「最年少」の子孫に流れ込みます wrap_content.

あなたの問題(今のように)

トップレベルビューではwrap_contentを使用するため、ディスプレイサイズは子供のすべてのディスプレイサイズに基づいています。この場合、使用する方が良いかもしれません match_parent' orfill_parent`(APIに依存)トップレベルビューのみ。これにより、コンテンツではないにしても、ダイアログが適切なサイズになるようになります。サイズが最上位ビューに基づいているコントロールの場合、それらは並んでいます。そうでないものは手動で調整する必要があります。

さて、ここで行わなければならない決定は実装です。すべてのディスプレイのサイズを調整する必要がありますか、それとも風景だけです。変更がポートレートディスプレイに影響を与えない場合、1つのファイルが適切なはずです。そうでない場合は、ポートレートのレイアウトファイル(現在のもの)が必要になり、次にランドスケープモード用に調整されたファイルが必要になります。

2つのファイルを使用している場合、名前のフォルダーがあります layout_port 現在のものが保存されます。名前のフォルダーを追加します layout_land 調整されたものの場合。それらは同じ名前で、別のフォルダーに収容されています。

お役に立てれば、

Fuzzicallogic

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top