摘要:我想要一排水平的 ImageButtons 均匀地缩小以适应屏幕尺寸。
我在屏幕顶部有一排 ImageButtons。一个左对齐的徽标 ImageButton,然后是右对齐的 ImageButtons,用于各种操作。
是的,这听起来很像 Honeycomb/ICS 操作栏,但代码是针对 Froyo 的,所以我需要在 2.2 兼容的布局中实现设计。
我以编程方式检测我何时在 7" 或更大的屏幕上,并切换到 ImageButtons 的更大图像(因为 drawable-xlarge 目录仅适用于 10" 及以上,而 drawable-large 适用于 4" 及以上)。
这在手机或 10" 平板电脑上效果很好。但是,在 7" 平板电脑上,图像对于纵向模式的空间来说太大了(应用程序被锁定为纵向模式)。
我尝试了许多不同的方法来缩小图像,因为我不想再为 7" 平板电脑使用另一组图像。但是图像的间距不正确,或者缩放到不同的水平,或者只是一些图片出现在屏幕上。我用过RelativeLayout、LinearLayout、android:weightSum,将图片设置为背景图片、src图片等。
编辑:我在实验中注意到的另一个怪癖是,如果我设置相同的 layout_weight,布局会起作用,迫使每个项目具有相同的宽度。如果我希望某些项目具有不同的宽度——在这种情况下这是必要的,因为第一个按钮需要更宽——然后当我设置与其他项目不匹配的 layout_weight 时布局会中断。只有一两个项目出现在屏幕上,其余的可能被推开。
这是我正在使用的布局。这是我迄今为止最好的——它在 10 英寸平板电脑和手机上运行良好,在 7 英寸平板电脑上几乎可以接受。但是徽标——应该与按钮高度相同,宽约 2.5 倍——明显高于其他按钮。有关改进布局的任何建议?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actionBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="5dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="@drawable/action_bar_bg"
>
<ImageButton
android:id="@+id/logoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/save_logo_03"
android:padding="2dip"
android:adjustViewBounds="true"
android:scaleType="centerInside"
/>
<View
android:id="@+id/spacer"
android:layout_width="50dip"
android:layout_height="1dip"
android:layout_weight="1"
android:visibility="invisible"
/>
<ImageButton
android:id="@+id/listButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/list_button"
android:background="@null"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/mapButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/map_button2"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/ltoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/lto_button"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/searchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/search_button"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
</LinearLayout>