2012-03-09 12 views
2

私はアプリケーションを持っており、タブレットや携帯電話をサポートする必要があるという問題があります。ただし、タブレットでは、すべてを表示するのに十分な大きさなので、ポートレートの代わりにランドスケープを使用できます。しかし、電話では、画面が小さすぎるため、これはすべてをねじ込みます。HDPIで風景を無効にしますが、既定の風景では使用しません。

私は携帯電話やタブレットではないためランドスケープビューを無効にしたかったです。

私はあなたのmanifest.xmlファイルに肖像画を定義することができることがわかり、それはレイアウトXMLに応じて、それを無効にすることは可能でしょうか?例えば

-phonesは、デバイスがレイアウト-hdpiを使用している場合、肖像画だけでは風景の中に行くことができる他に、有効にする必要があります

をレイアウトするレイアウト-hdpi -tabletsデフォルトを使用します。

+0

一部のユーザーは、しかし、これは最初の最初の何か他のものへの要求の向きを設定することにより固定することができ、無視されている上記のコードで問題を報告します。私は最初のアプリの一つでそれをやってみた...そしてよく...ユーザーはそれを好まなかった。私は "回転しない"、 "景観が必要"などのような悪いコメントをたくさん持っていました。(景観を保つのに理にかなった物理的なキーボードを備えた電話機も考えています) – YuviDroid

+0

私はもう少しボタンを押してからもう一度やりましたが、すべての画面を扱うのは簡単ではありません:/ –

答えて

1

私は、次のことで、これをやった:マニフェストで

  • をscreenOrientationタイプとして: "@整数/ screenOrientation" 電話用
  • (あなたが撮りたい場合)に設定screenOrientation値を "1"
  • のためにタブレットは、(あなたは風景を望む場合は)あなたがscreenOrientation iに対する異なる(それをチェックアウト検索をしたい場合は、この値はそうsource sdkから来た「0」

screenOrientation値を設定しますこのリンク)。

私は、このソリューションはあなたを助けることを願っています。

+0

マニフェストは彼が電話やタブレットを使っていることをどのようにして知っていますか?私はタブレット用のアプリケーションを構築してから電話用にビルドすることはできません。/ –

+1

これはリソースファイルから分かります。 values-xlarge(タブレット用のフォルダ)と値(他のすべてのデバイスのフォルダ)のファイルvalues.xmlを追加します。次に、 0または1をこのファイルに追加します。 – pjanecze

+0

これは素晴らしい答えです!ありがとう –

0

@pjaneczeによって与えられた答えの代わりに、コードでこれを行うことです。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

私は私のベースの活動でこれを呼び出すのonCreateメソッド。何らかの理由でマニフェスト方法が私のために働いていなかった。私は実際にそれをしないだろう

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
関連する問題