簡體   English   中英

ImageView在平板電腦和手機上看起來一樣

[英]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/valuesres/values-sw600dpres/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的scaleTypeadjustViewBounds屬性或編寫一些Java代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM