2016-05-15 512 views
0

我已經在佈局文件中創建了佈局並定義了以下XmlDP在不同的屏幕上顯示不同的佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.kirmani.myapplication.MainActivity" 
    android:orientation="vertical" 
    > 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:background="@color/colorPrimary" 
     /> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:background="@color/colorPrimaryDark" 
     /> 

    <ImageView 
     android:layout_width="405dp" 
     android:layout_height="260dp" 
     android:background="@color/colorAccent" 
     /> 

</LinearLayout> 

這是填充我的整個屏幕在Nexus 4屏幕完美。但是當我預覽所有的屏幕時,它在一些屏幕上顯得非常奇怪。

我正在使用DP,它應該保持相同的display根據所有屏幕,但它不是那樣工作。請指導我..

enter image description here

回答

1

你的第三個imageview的寬度應該是匹配的父母。像這樣

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorAccent" 
    /> 

代替

<ImageView 
    android:layout_width="405dp" 
    android:layout_height="260dp" 
    android:background="@color/colorAccent" 
    /> 
+0

謝謝,這符合所有設備的寬度,但高度仍然是一個問題。在Nexus One中它會填滿整個屏幕,但在其他屏幕中顯示空間 - – Kirmani88

+0

您可以在第3個圖像視圖中使用您的身高匹配父母也 – Masum

2

其實DP裝置,能根據所有屏幕相同的顯示。這是因爲每個設備都不應該在dp中具有相同的寬度。有些設備有480dp,他們中的一些360dp等

如果你想你的形象適合您的寬度,你必須使用

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="260dp" 
    android:background="@color/colorAccent" 
    /> 

不使用固定的DP。

編輯:

如果要高度填滿,使用此:

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorAccent" 
    /> 
+0

感謝,這符合所有設備的寬度,但高度仍是個問題。在'Nexus One'中它填滿了整個屏幕,但是在其他屏幕中它的末尾顯示空間 – Kirmani88

+0

@ Kirmani88更新了我的答案 –

1

我們在這裏討論的Android ABC。你需要了解它是如何工作的,而不是尋找具體問題的具體答案,as I already recommend you here

每個設備在DP中都有一個特定尺寸。 Nexus 4的尺寸爲384x640,但是這些尺寸是您圖片中唯一的。請注意,這不是「在某些屏幕上看起來很奇怪」,實際上在所有屏幕上都不是384x640。例如,圖像中的Nexus One(533dp x 320dp)沒有像預期的那樣工作,但更難以實現,因爲哪裏出錯是超出了您的看法,但視圖比屏幕更大。與Nexus S相同。

如果您嘗試從邊到邊(所有屏幕寬度)獲取視圖,請使用match_parent。不要在DP中指定大小。

如果您嘗試水平或垂直分佈視圖,請使用特定的ViewGroup和/或權重,或者您可以使用Percent Support Library來執行諸如thisthis之類的操作。 Take a look at this tutorial for more

無論如何,在這裏你有你的副本&粘貼代碼。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@color/colorPrimary" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1.5" 
     android:background="@color/colorPrimaryDark"/> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="2.6" 
     android:background="@color/colorAccent"/> 

</LinearLayout> 
+0

再次感謝:)您正在使用'height = 0'並使用'weight'它增加了「高度」,你能否詳細說明「重量和高度」之間的差異。與'weight'一樣,我可以添加任意數量的'Views',但是'Height'只添加一定數量的Views,並開始在小屏幕中隱藏一些'views'。 – Kirmani88

+0

http://developer.android.com/intl/es/guide/topics/ui/layout/linear.html – Sotti

+1

只要去閱讀和做一些學習。不要使用StackOverflow進行學習,只是在閱讀並嘗試了幾次後才解決問題,但仍然失敗。 – Sotti

相關問題