Android ImageButton解决问题

时间:2012-12-16 18:54:44

标签: android layout size resolution imagebutton

我希望程序顶部有两个按钮,用户可以进行不同的活动。我在格式化方面遇到了很多麻烦。

如何制作按钮以根据屏幕尺寸按比例拉伸?现在,它们对于一个屏幕尺寸看起来没问题,然后我将切换到另一个屏幕尺寸,它将显示为全部按下或拉伸。我已经尝试了所有不同的ScaleTypes,似乎没有任何区别。我也去了,并使用Shubhayu's answer按比例将所有图像保存到xmpi,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" />

3 个答案:

答案 0 :(得分: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 :(得分:0)

我猜你正试图在屏幕顶部均匀地调整按钮大小。如果是这种情况,那么您应该设置android:layout_width="0dp"

答案 2 :(得分:0)

只需使用android:layout_width =“wrap_content”