2016-05-12 201 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包裝內容支持多個屏幕:http:// developer。 android.com/guide/practices/screens_support.html –

+0

如果不是這樣,您可以在dimen.xml文件中創建自定義維度,其中手機和平板電腦的值分別爲1。 (例如,對於小型設備幾乎無處不在的默認邊距是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

我從我寫的另一個程序複製並粘貼。我把所有的實際工作代碼都拿出來了。如果有東西看起來不正確,我必須刪除太多的代碼。如果我搞砸了,我會查看並糾正。 –