我正在开发一个Android应用程序的主屏幕,我正在尝试按照以下方向在android中布置4个ImageButtons:
a | b
_____
c | d
例如,A位于屏幕的左上方,b位于屏幕的右上方,c位于屏幕的左下方,d位于屏幕右下方的中央。所有图像都是512x512像素,因此,由于它们非常大,如果屏幕尺寸很小,应自动缩小。我不关心拉伸它们。
我已经在Android中尝试了基本上所有不同类型的布局,而我正在努力解决这个问题,经过2.5小时的实验和研究后,我正在寻求帮助。有谁知道如何做这个或一个样本开源应用程序这样做?
答案 0 :(得分:3)
您应该在LinearLayouts和ImageButtons上设置权重,并将ImageButton
ScaleTypes设置为fitXY
,如此
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:orientation="horizontal>
<ImageButton
android:src="@drawable/myimage1"
android:layout_height="fill_parent"
android:layout_width="0dp"
android:layout_weight="1.0"
android:scaleType="fitXY"/>
<ImageButton
android:src="@drawable/myimage2"
anroid:layout_height="fill_parent"
android:layout_width="0dp"
android:layout_weight="1.0"
android:scaleType="fitXY"/>
</LinearLayout>
<LinearLayout
//same as above horizontal layout with same children for buttons 3 and 4
</LinearLayout>
</LinearLayout>
权重根据儿童总重量的百分比来划分空间。因此,如果两个孩子的体重都是1.0,他们就会获得50%的空间。为了使权重作用于该视图,您应指定要将权重计算为0dp的维度。 ScaleType fitXY
只是将图像放入ImageButton
可用的空间。
答案 1 :(得分:0)
编辑:似乎趋势是在发布代码之前或之后有某种解释。 下面的解决方案由不健康的LinearLayouts和嵌套权重组成。我首先将屏幕分成上半部分和下半部分,然后再分左右两半(注意交替方向) - 给我们四分之一。我假设你希望你的图像在那个区域的中心某处,所以我们通过嵌套weightSum = 3 LinearLayouts进一步将它分成9,3x3矩形。最后一步是在3x3网格的中间LinearLayout处放置ImageButton(我有ImageView,但这无关紧要),并给它一个 centerInside 的scaleType - 如果你这个scaleType是完美的拥有足够大的图像,不用担心拉伸它来填充你的布局。另外,它不会扭曲纵横比。另外,一个重要因素是使用 android:src 而不是android:background,因此ImageView会尊重scaleType。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="2">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:weightSum="2"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:weightSum="3"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="centerInside">
</ImageView>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:weightSum="3"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="centerInside">
</ImageView>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:weightSum="2"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:weightSum="3"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="centerInside">
</ImageView>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:weightSum="3"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="centerInside">
</ImageView>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>