2012-03-05 59 views
4

在android中,我們可以通過屏幕密度來定義資源,例如LDPI,HDPI和MDPI。Android:啓動器圖標DP中的寬度和高度

我希望能夠構建一個具有與其旁邊的ImageView相同寬度和高度的TextLayout的UI。 ImageView託管一個圖像,大小與啓動圖標相同(HDPI爲72px等)。

有沒有辦法知道圖標在'dp'中有特定的寬度 - 高度(沒有kwnoi,所以我可以硬編碼XML。我認爲這是可能的,因爲dp獨立於設備但無法找到在DP得到的值的任何方式。

<TextView 
    android:id="@+id/holidaylistitem_day" 
    android:layout_width="<X>dp" 
    android:layout_height="<Y>dp" 
    android:text="1st"/> 

<ImageView 
    android:id="@+id/holidaylistitem_type" 
    android:src="@drawable/ic_launcher" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

我需要的是X和Y值,因此兩者將是大小相同的。

+0

你是在YouTube上有關於PHP,Mysql和Apache2的視頻的人嗎? – 2012-03-05 14:03:15

回答

7

Android Design Guide有描述了推薦icon dimensions的頁面。總之,啓動器圖標爲48x48 dp。

+0

我認爲你是對的,這也是有道理的,謝謝,我會檢查出來。我沒有完整閱讀鏈接,錯過了細節。非常感謝您指出。 – 2012-03-05 15:27:52

1

有4個案件中有Android的不同類型的設備:

ldpi --> 36x36 
mdpi --> 48x48 
hdpi -->72x72 
xhdpi --> 96x96 

檢查這個Link

+0

對於hdpi,你的意思是說72x72,對吧? – Sparky 2012-03-05 14:28:53

+0

那就是像素值正確嗎?我認爲@Sparky是正確的,我已經簡要地瀏覽了該頁面,但錯過了48dp的價值。 像素值可以工作,但問題是,根據我的知識,必須編寫幾個佈局文件。我喜歡在一個文件中做事情,因爲我忘了編輯其他文件,因此我對其中一個做了修改。 對於你的問題,關於Youtube的VID,雅是我的。 – 2012-03-05 15:25:12

+0

@Sparky是的,我是對的。我編輯了我的答案,我打錯了。 – 2012-03-05 15:49:55

1

正如Android Killer所說,「有4種情況,因爲在Android中有不同類型的設備......」。你可以得到dpi.To轉換PX與DP使用:

DP =(PX * 160)/ DPI
參考:
developer.android

0

我有你的情況更好的解決方案但是它有點複雜。在這裏,我們去:

  1. 當你不能決定你的圖標大小,但你一定是方形的,你想它的寬度/高度相同的圖標,水平放置。你可以這樣做:

    機器人:layout_alignTop = 「@ + ID/holidaylistitem_type」 機器人:layout_alignBottom = 「+ ID/holidaylistitem_type」

  2. 現在你的TextView的位置和高度是固定的。然後您延長的TextView,並做到這一點:

    @覆蓋
    保護無效onMeasure(INT widthMeasureSpec,詮釋heightMeasureSpec){

    int width = MeasureSpec.getSize(widthMeasureSpec); 
        int height = MeasureSpec.getSize(heightMeasureSpec); 
    
        if (width > height) { 
         width = height; 
        }  
        super.onMeasure(
          MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), 
          MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY) 
        ); 
    } 
    
  3. ImageView的大小廣場。