2012-12-16 41 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”