2012-09-19 106 views
0

我有一個簡單的待辦事項列表應用程序,其中包含一個黑色形狀的按鈕,用於將其添加到列表中。在Android 2.2系統,黑色加上看起來是這樣的:Android按鈕拉伸4.1但不是2.2

enter image description here

然而,在搭載Android 4.1的黑色加上看起來是這樣的:

enter image description here

加號應該的樣子它在2.2中。這是我的適當片段的xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    android:id="@+id/widget78" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:focusable="true" android:focusableInTouchMode="true"> 
<ListView 
    android:id="@+id/taskslist" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="10" /> 
<LinearLayout 
    android:id="@+id/widget83" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="12dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp"> 
<EditText 
    android:id="@+id/taskname" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:background="@drawable/edittextbackground" 
    android:layout_marginBottom="0dp" 
    android:layout_marginLeft="0dp" 
    android:layout_marginRight="2dp" 
    android:hint=" Add Something :)" 
    android:textSize="18sp" 
    android:windowSoftInputMode="adjustNothing" 
    android:cursorVisible="true" 
    android:textColor="#000000" 
    android:textCursorDrawable="@null" 
    android:layout_weight="9999999"/> 
<!-- android:imeOptions="actionGo" 
    android:inputType="textImeMultiLine" 
    --> 
<FrameLayout 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"> 
<Button 
    android:id="@+id/addtask" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/small_black_plus" 
    android:layout_marginBottom="0dp" 
    android:layout_gravity="center" 
    android:layout_marginLeft="2dp" 
    android:layout_marginRight="0dp" 
    android:text="" /> 
</FrameLayout> 
</LinearLayout> 
</LinearLayout> 

爲什麼佈局在兩個版本上看起來不同?我怎樣才能讓它們看起來一樣?

回答

0

這是因爲4.1中的新TabHost允許「可滾動」選項卡。看看你如何水平滾動它?

爲了使這兩個版本的Android看起來都正確,我會使用資源限定符(在文件夾名稱中)爲不同的API級別創建ViewStub,併爲不同的選項卡使用相同的ID,但會明確設置您的字體大小,他們不適合(或更改文本,這是由你自己)

0

或者你可以使用ImageView而不是按鈕,他們在你的情況下工作相同。

1

我在想這可能與您管理資源文件的方式有關。你測試的設備有不同的分辨率嗎?您看到的失真可能是由操作系統自動縮放放置在xhdpi屏幕的drawable-mdpi或drawable-hdpi文件夾中的資源引起的。

這裏是如何管理您的資源文件有很大的參考,希望這有助於:

http://developer.android.com/guide/practices/screens_support.html

編輯:

此外,看看這個問題:

Difference: android:background and android:src?

正如其他人所觸及的,您可以嘗試將Button更改爲ImageView 。通過設置onClickListener,可以將android中的任何視圖用作按鈕,方法與使用Button相同。如果您這樣做,請嘗試使用android:src屬性而不是android:background設置您的圖像可繪製資源。我不認爲這是你的問題的原因,因爲我不確定Android的不同版本會導致你的視圖大小不同,但也許在這兩個想法之間你可以找出一些有用的東西。

+0

我已經在Galaxy Nexus上用ICS,LG Lucid和薑餅以及兩個模擬器進行了測試。我發佈的屏幕截圖來自仿真器。但是,2.2仿真器的圖片看起來與lucid相同,而4.1仿真器的外觀與鏈接上的相同。模擬器都會說「hw.lcd.density:240」,但我不知道這意味着什麼。顯然,連結點的屏幕比透明顯示屏要大得多,操作欄上的設置按鈕也是如此。 – Adam

+0

您對我的資源文件管理不正確可能是正確的。我只是使用一個圖像的所有屏幕尺寸。之後我創建了4個圖像,每個屏幕尺寸一個。儘管如此,Android 4的版本仍然看起來很緊張。我會更仔細地閱讀你的材料,並嘗試修復它。 – Adam