我希望在程序顶部有两个按钮,引导用户进行不同的 Activity 。我在格式化方面遇到了很多麻烦。
如何才能使按钮根据屏幕尺寸按比例拉伸(stretch)?现在,它们在一种屏幕尺寸上看起来不错,然后我会切换到不同的屏幕尺寸,它会显得全部被弄脏或拉伸(stretch)。我已经尝试了所有不同的 ScaleType,但似乎都没有什么区别。我还使用 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" />
最佳答案
将 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"/>
关于Android ImageButton 分辨率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904465/