[英]ImageView to look the same on tablet and phone
我在cardview內有一個imageview來創建一個圓形圖像。 在智能手機上,我希望圖像的大小為250和250dp,假設這大約是我手機寬度的80%。
在平板電腦上,我希望圖像大約是平板電腦寬度的80%,並且高度也必須與寬度匹配。 實現它的最佳方法是什么。 謝謝?
以下是我手動放置250dp寬度和高度的代碼,在智能手機上看起來不錯,但對於平板電腦來說卻很小。
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="250dp"
android:layout_height="250dp"
android:elevation="12dp"
app:cardCornerRadius="125dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="1.9"
android:layout_marginTop="20dp">
<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:id="@+id/image_album_art"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
</ImageView>
</android.support.v7.widget.CardView>
您可以做的是創建一個大布局的文件夾,即大布局,然后從布局文件夾復制布局並將其粘貼到大布局文件夾中,然后根據平板電腦的屏幕大小設置高度和寬度,即450DP左右檢查!
Android旨在簡化此過程。 如果要根據設備配置(即屏幕大小)更改資源,請在特定目錄中定義該資源:
res/layout-sw720dp - large (9"-10") tablets
res/layout-sw600dp - small (7"-8") tablets
res/layout - all other devices
當將-sw600dp
附加到目錄名稱時,這表示“最小寬度600 dp”。 這意味着此目錄適用於屏幕寬度為600dp或更大的設備。 “最小寬度”表示屏幕的任意一側較小,因此,無論是縱向還是橫向,一個1067dp x 600dp的屏幕都算作最小寬度為600dp。
您可以為每種配置制作整個布局文件的副本,然后將其放在上述每個目錄中。 但是,如果除View大小以外的所有文件都相同,您將有很多重復的代碼。 如果需要進行更改,則必須在所有三個文件中進行更改,這可能會導致錯誤。
您可以定義一個隨配置而變化的尺寸,而不是具有多個布局。 布局以res/layout/
,尺寸以res/values/
創建一個新的XML文件dimensions.xml
並將其放在res/values
目錄中。 像這樣添加一個新的尺寸:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="album_art_size">250dp</dimen>
</resources>
這將是電話將看到的文件。
然后,再創建兩個values
目錄,並將最小寬度的限定符附加到它們中,這樣便具有res/values
, res/values-sw600dp
和res/values-sw720dp
。 將dimensions.xml
復制到這兩個新目錄中。 然后,您可以在每個文件中修改album_art_size
尺寸,並且當您的應用以不同的屏幕尺寸運行時,它將看到相應的Dimensions.xml文件。
最后要做的是將布局指向剛創建的album_art_size
維度。 更換250dp
與@dimen/album_art_size
:
android:layout_width="@dimen/album_art_size"
android:layout_height="@dimen/album_art_size"
這樣一來,您可以為每個設備類別選擇特定的尺寸,這將使您足夠接近80%的屏幕尺寸目標。 如果您恰好需要80%的屏幕寬度和一個正方形View,則需要擺弄ImageView的scaleType
和adjustViewBounds
屬性或編寫一些Java代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.