2011-01-26 1 views
1

私はAndroidアプリケーションを構築していますが、Galaxyタブ用に設計されています。スペックでは、画面サイズは1024x600ですが、このサイズでコンポーネントを追加しようとすると、下が切られます。 アプリケーションが表示サイズのすべてに当てはまらない

私は違い
WindowManager mWMgr = (WindowManager) getApplicationContext() 
.getSystemService(Context.WINDOW_SERVICE); 
    int width = mWMgr.getDefaultDisplay().getWidth(); 
    int height = mWMgr.getDefaultDisplay().getHeight(); 
    Toast.makeText(getApplicationContext(), 
    "[system][w=" + width + ":h=" + height + "]", Toast.LENGTH_LONG).show(); 

    width = getWindowManager().getDefaultDisplay().getWidth(); 
    height = getWindowManager().getDefaultDisplay().getHeight(); 
    Toast.makeText(getApplicationContext(), 
    "[this][w=" + width + ":h=" + height + "]", Toast.LENGTH_LONG).show(); 

実行

を参照するために、次のコードを追加し、これは示しています [システム] [600 = W:H = 1024] [本] [W = 400、H = 683]

どうしてですか?

必要に応じて、コンポーネントを画面に配置するコードを追加します。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="600px" 
    android:layout_height="1024px"> 
    <ImageView android:id="@+id/image01" android:layout_width="match_parent" 
     android:layout_height="match_parent" android:scaleType="fitXY" /> 
</LinearLayout> 

この

はこの場合、私のlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ImageView android:id="@+id/image01" android:layout_width="match_parent" 
     android:layout_height="match_parent" android:scaleType="fitXY" /> 
</LinearLayout> 

で、私はImageViewの上に描画画像を画面サイズに合わせてスケーリングます(400x683)

は、私がテストしました

このようにして、画像の左下が切り取られます。

答えて

2

は)(Display.getWidth /身長を使用しないでください。これらは生のディスプレイのサイズを返します。これはあなたが実際に持っている空間の大きさではありません。たとえば、ステータスバーを使用すると、実際のスペースがある軸からいくらか不確定な量だけ減少します。そして、FLAG_FULLSCREENを使用すると、これはあなたがこれを救うことにはならないと考えてください。なぜなら、デバイスには、「戻る」と「ホーム」ボタンのようなものを含む「ステータスバー」があり、あなたが取り除くことのできるものではないからです。

画面のサイズを変更する正しい方法は、ビューシステムによるものです。ここでもっとも簡単なのは、onSizeChanged()を実装しているViewのサブクラスを作成し、setContentView()でこれを固定することです。レイアウトパスが完了すると、onSizeChanged()が呼び出され、ビューで使用可能なスペースが使用されます。これは、向きの変更、表示の変更、IMEの表示などのために、そのスペースが変更されたときに呼び出されます。

+0

フルスクリーンなしで、タイトルバーが縦軸に20pxと見えますが、これらのコンポーネントはフルスクリーンモードであっても自分の画面の200x600ピクセルを取得します。私はあなたに何が起こったかを見るためにアプローチしようとします。 –

1

それはマニフェストで、それぞれの値を指定するのに役立ちん:

<supports-screens android:smallScreens=["true" | "false"] 
        android:normalScreens=["true" | "false"] 
        android:largeScreens=["true" | "false"] 
        android:anyDensity=["true" | "false"] /> 

Android docs on thisを参照してください。

1

XMLには何がありますか? ビューの親コンテンツまたはラップコンテンツを入力しますか?あなたがやっていることに応じて、最初のものを必要とする...

編集:トップトルステンDittmarsの答えに...