2012-05-11 10 views
0

私はアプリケーションを開発しました。私が開発したサイズは3.7in WVGA Nexus Oneでした。java code複数の画面サイズをサポートする方法

この画面よりも大きく表示すると、問題はありません。 3.7inよりも小さく表示すると、問題が発生しました。

私のxmlは、私はいくつかのウィジェットのための固定pxを使用しています。

<LinearLayout 
    android:id="@+id/layout_content" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/layout_title" 
    android:background="@drawable/backrepeat" 
    android:gravity="center_vertical|center_horizontal" > 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center_vertical|center_horizontal" > 

      <TableLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="center_vertical|center_horizontal" > 

       <TableRow 
        android:layout_width="fill_parent" 
        android:gravity="center_vertical|center_horizontal" 
        android:paddingBottom="10px" 
        android:paddingTop="10px" > 

        <LinearLayout 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:gravity="center_vertical|center_horizontal" > 

         <TextView 
          android:id="@+id/fixtext_name" 
          android:layout_width="80px" 
          android:layout_height="wrap_content" 
          android:gravity="right" 
          android:paddingBottom="10px" 
          android:text="姓名 :" 
          android:textColor="#000000" 
          android:textSize="30px" /> 

         <EditText 
          android:id="@+id/text_name" 
          android:layout_width="400px" 
          android:layout_height="wrap_content" 
          android:ems="15" 
          android:gravity="left" 
          android:inputType="textPersonName" 
          android:paddingBottom="10px" 
          android:textSize="30px" > 
         </EditText> 
        </LinearLayout> 
       </TableRow>       
      </TableLayout> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

これはアプリケーションレイアウトの例です。全幅だから

fill_parent

を使用して480PXと高さで、高さは問題ありません。

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:resizeable="true" 
    android:smallScreens="true" 
    android:xlargeScreens="true" 
    android:requiresSmallestWidthDp="480" 
    android:compatibleWidthLimitDp="480" 
    android:largestWidthLimitDp="480" > 
</supports-screens> 

これは、マニフェストxmlのサポート画面の属性です。私はすでにすべてを設定していた。

2.7インチQVGA(SG Miniのようなもの)で表示されていた問題は、フルスクリーンアイテムではなく240pxの唯一のディスプレイサイズでした。

アプリケーションの画面サイズでアプリケーションベースのサイズを変更する方法を尋ねますか?

場合によっては、すべてのアクティビティで同じことをコーディングする必要がありますか?

答えて

0

小さな画面でのみ動作する新しいXMLファイルを指定できます。あなたは
2)が終了し、新しいレイアウトを作成します)> AndroidのXMLファイル
3を新規作成を選択します(元のファイルとNEXT押しと同じ名前を入力していないプロジェクトで

1)右クリック)
4)修飾子を選択できるようになりました。たとえば、 "Size"と指定すると、XMLのみを指定します。 5)修飾子とそのプロパティを指定したら、finishを押します。
6)layout-SOMETHINGという名前のフォルダ(この場合はレイアウト小)にXMLファイルがあります。

この新しいレイアウトは、コード内の何も変更せずに変更できます。 NULLPOINTER例外を避けるために同じIDなどを使用していることを確認してください。

これが役に立ちます。

+0

これは、私は20 xmlを得たこともスーツの小さなサイズのために新しいものを作成する必要があるのですか?たとえば、元の私はa.xmlとb.xmlを取得し、次にsmall_a.xmlとsmall_b.xmlの新しいインスタンスを作成する必要があります。内部も変更せずに完全にコピーする必要があります –

+0

新しいレイアウトはres/layoutフォルダに入れる必要がありますか? –

+0

Javaクラスはどうですか?実装されていない場合、アプリケーションはどのフォルダを使用しているかを判断する方法ですか? –

1

「px」を使用しようとしているようです。これは問題かもしれません。代わりに、XMLのwidth属性とpadding属性を「dip」してみてください。

はここPX、DPの違いについてご説明して非常に良い例です、小さなエミュレータビューに応じなど

What is the difference between "px", "dp", "dip" and "sp" on Android?

0

デザインの新しい.xmlファイルを浸し。 デザイン.xmlファイルの後にこのコードを使用します。

。javaファイルを試してください:

次に、.xmlファイルIDを渡すスイッチケースを適用してください。

0

最終的なViewTreeObserver mLayoutObserver = mLayout.getViewTreeObserver();

mLayoutObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() 
{ 

    @Override 
    public void onGlobalLayout() 
    { 
     DisplayMetrics metrics = getResources().getDisplayMetrics(); 

     int deviceWidth = metrics.widthPixels; 

     int deviceHeight = metrics.heightPixels; 

     float widthInPercentage = ((float) 280/320) * 100; // 280 is the width of my LinearLayout and 320 is device screen width as i know my current device resolution are 320 x 480 so i'm calculating how much space (in percentage my layout is covering so that it should cover same area (in percentage) on any other device having different resolution 

     float heightInPercentage = ((float) 300/480) * 100; // same procedure 300 is the height of the LinearLayout and i'm converting it into percentage 

     int mLayoutWidth = (int) ((widthInPercentage * deviceWidth)/100); 

     int mLayoutHeight = (int) ((heightInPercentage * deviceHeight)/100); 

     LayoutParams layoutParams = new LayoutParams(mLayoutWidth, mLayoutHeight); 

     mLayout.setLayoutParams(layoutParams); 
    } 
}); 
+0

あなたが提供するソリューションについてもう少し詳しく説明してください。 – abarisone

+0

xmlファイルを変更せずに、このメソッドをアクティビティに追加する必要があります。 – Andriya

関連する問題