2012-12-16 74 views
2

我想在我的程序頂部有兩個按鈕,讓用戶可以進行不同的活動。我在格式化方面遇到了很多麻煩。Android ImageButton解決問題

我怎樣才能讓它按照屏幕大小按比例拉伸?現在,他們會看起來像一個屏幕大小,然後我會切換到一個不同的,它會出現所有的衝動或拉伸。我已經嘗試了所有不同的ScaleTypes,而且沒有任何區別。我也去了,並使用Shubhayu's answer按比例將所有圖像保存到正確的尺寸關注xhdpi,hdpi等。

這裏是我到目前爲止的代碼:

<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" 
android:background="@drawable/brushed_metal_background_dark" 
tools:context=".HomeActivity" > 

<ImageButton 
    android:id="@+id/incidentsSelect" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/incident_bar2" 
    android:contentDescription="Incidents" 
    android:onClick="chooseIncident" 
    android:scaleType="center" /> 

<ImageButton 
    android:id="@+id/operationalPeriodsSelect" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/operationalperiod_bar2" 
    android:contentDescription="Operational Periods" 
    android:onClick="chooseOperationalPeriod" 
    android:scaleType="fitCenter" /> 

回答

2

android:background更改爲android:src將保持寬高比。使用android:scaleType="centerInside"可將整個圖像放入按鈕區域,並可選擇使用android:adjustViewBounds=true刪除空白區域。例如:

<ImageButton 
    android:id="@+id/incidentsSelect" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:contentDescription="Incidents" 
    android:onClick="chooseIncident" 
    android:src="@drawable/incident_bar2" 
    android:scaleType="centerInside" 
    android:adjustViewBounds="true"/> 

<ImageButton 
    android:id="@+id/operationalPeriodsSelect" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:contentDescription="Operational Periods" 
    android:onClick="chooseOperationalPeriod" 
    android:src="@drawable/operationalperiod_bar2" 
    android:scaleType="centerInside" 
    android:adjustViewBounds="true"/> 
+1

謝謝!我也不得不使用android:background =「@ null」來擺脫惡意背景邊界的事情。 –

0

我猜測,您試圖大小的按鈕均勻地塗在屏幕的頂部。如果是這種情況,那麼你應該設置android:layout_width="0dp"

+0

我並沒有跟讓他們甚至問題,它基本上就給予我的問題的高度。我認爲這是平均拉伸寬度,但不是高度,所以基本上如果屏幕比較小,我的按鈕很大,很胖,如果它更大,它們會變得非常瘦。 –

0

只需使用Android:layout_width =「WRAP_CONTENT」