在android中对齐和空间3个图像,占据全宽

时间:2014-03-19 16:59:04

标签: android android-layout

我有3张图片,我希望能够获得像screenshot

这样的内容

它应该占据屏幕的整个宽度,高度为100dp(或者我会选择的任何高度)。

我的图像是方形和大的。我希望它们具有100dp的高度,保持它们的纵横比(正方形)并且间隔均匀

我用这段代码得到的是3张宽度为1/3的图像,没有平方,间隔没有空格

我尝试了各种各样的东西(和scaleType一起玩,...)但我被卡住了(除了为每个人手动设置宽度为100dp,我从概念上不喜欢)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal" >
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:gravity="center">
        <ImageView
            android:id="@+id/img1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/img1"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:gravity="center">
        <ImageView
            android:id="@+id/img2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/img2"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:gravity="center">
        <ImageView
            android:id="@+id/img3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/img3"/>
    </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我是用代码做的:

int resx = getWindowManager().getDefaultDisplay().getWidth();
int spaceBetweenPics = (resx - 300) / 2; // Two spaces taking resolution - 3 images size
Bitmap [] pics = New Bitmap[3];

for (int i = 0; i < 3; i++)  {
    pics[i] = BitmapFactory.decodeResource(getResources(), R.drawable.img1 + i); 
    // With their names, they are contiguous in the drawables index
    pics[i] = Bitmap.createScaledBitmap(pics[i], 100, 100, false);
}

在你的onDraw方法中:

for (int i = 0; i < 3; i++)
    canvas.drawBitmap(pics[i], (100 * i + spaceBetweenPics * i), 0, null);