2016-05-12 28 views
0

画像ボタンがあります。画面サイズに応じてサイズを変更する方法は何ですか?画面サイズに応じてボタンのサイズを変更するにはどうすればよいですか?

<Button 
    android:id="@+id/infobutton" 
    android:layout_width="64dp" 
    android:layout_height="64dp" 
    android:layout_alignLeft="@+id/button1" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="45dp" 
    android:background="@drawable/info_button" /> 
+0

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension – CommonsWare

+1

info_buttonはイメージですか?それがイメージの場合は、異なる画面drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpに対して異なるイメージを作成し、layout_width、layout_heightをコンテンツにラップすることができます。 android.com/guide/practices/screens_support.html –

+0

それがそうでない場合は、電話機とタブレットの値が1になるカスタムディメンションをdimen.xmlファイルに作成できます。 (たとえば、ほとんどの場所で使用されるデフォルトのマージンは、小型デバイスの場合は16dp、それ以上のサイズのデバイスの場合は64dpです)。その動作をコピーすることができます。 – Vucko

答えて

-1

この回答は少し複雑ですので、私に同行してください。

あなたは

public static int getScreenDensity(Context context) { 
    int density = context.getResources().getDisplayMetrics().densityDpi; 

    switch(density) 
    { 
     case DisplayMetrics.DENSITY_LOW: 
      return DisplayMetrics.DENSITY_LOW; 

     case DisplayMetrics.DENSITY_MEDIUM: 
      return DisplayMetrics.DENSITY_MEDIUM; 

     case DisplayMetrics.DENSITY_HIGH: 
      return DisplayMetrics.DENSITY_HIGH; 

     case DisplayMetrics.DENSITY_XHIGH: 
      return DisplayMetrics.DENSITY_XHIGH; 

     case DisplayMetrics.DENSITY_XXHIGH: 
      return DisplayMetrics.DENSITY_XXHIGH; 

     case DisplayMetrics.DENSITY_XXXHIGH: 
      return DisplayMetrics.DENSITY_XXXHIGH; 

     default: 
      return DisplayMetrics.DENSITY_DEFAULT; 
    } 
} 

はその後の活動では、画面の大きさを検出することができますので、のように、ボタンのプロパティを調整...そうのようないくつかのメソッドを作成することができます。

private void setTunerPopoverSize(PopoverView popoverView) { 
    int screenDensity = Util.getScreenDensity(this); 

    if (screenDensity == DisplayMetrics.DENSITY_HIGH) { 
     // set button size here if high density 
    } else if (screenDensity == DisplayMetrics.DENSITY_XHIGH) { 
     // set button size here if xhigh density 
    } else { 
     // set default button size 
    } 
} 

これが役立ちます。

+0

あなたの 'getScreenDensity'メソッドは面白そうです:) –

+0

、画面密度!=画面サイズ;) –

+0

私が書いた別のプログラムからコピーして貼り付けました。私はすべての実際の作業コードを取り出しました。何かが正しく見えない場合は、あまりにも多くのコードを削除する必要があります。私は何かを台無しにしているかどうか見渡し、修正します。 –

関連する問題