ScaleToFit布局Quandry

时间:2011-09-22 14:52:12

标签: android layout

我正在尝试了解有关Android布局系统的更多信息;这对我来说是一次学习经历。我正在尝试创建一个基本上相当于两个线性布局的布局:一个fill_parent垂直,内部fill_width水平,所以我有一个ImageView横幅[在外面],然后七个ImageButton列填充视图的宽度[在内心]。

我的问题来了,因为我需要ImageButton的内容按比例填充整个按钮视图[列],但要尊重ImageButton边界,这样如果 a小图像或大图像是源,它将在ImageButton中居中,填充它的垂直和水平尺寸,并居中。 - 我无法控制源图像。

我以为CenterCrop会这样做,但对我来说是虚无... ...

  

ImageView.ScaleType CENTER_CROP均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)。

关于我所拥有的任何相关的想法;请忽略外部外部布局:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:id="@+id/linearLayout2"
        android:layout_height="fill_parent" android:orientation="vertical"
        android:layout_width="fill_parent" android:background="@color/special_grey"
        android:layout_margin="0dp">

        <ImageView android:id="@+id/imageView1"
            android:layout_height="wrap_content" android:layout_gravity="center"
            android:layout_width="wrap_content" android:layout_margin="10dp"
            android:src="@drawable/banner_logo" />

        <LinearLayout android:id="@+id/linearLayout1"
            android:layout_margin="5dp" android:layout_gravity="center"
            android:layout_width="fill_parent" android:layout_height="250dp" android:baselineAligned="true">
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_0" android:maxWidth="100dp"
                android:id="@+id/imageButton1" android:layout_weight="1"
                android:scaleType="centerCrop" android:cropToPadding="true"
                android:layout_gravity="center" android:layout_width="0dp"
                android:padding="0dp" android:layout_height="250dp" />
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_1" android:maxWidth="100dp"
                android:id="@+id/imageButton2" android:layout_weight="1"
                android:cropToPadding="true"
                android:layout_width="0dp"
                android:padding="0dp" android:layout_height="250dp" android:scaleType="centerCrop" android:scrollbarAlwaysDrawHorizontalTrack="false" android:scrollbarAlwaysDrawVerticalTrack="false" android:layout_gravity="fill"/>
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_2" android:maxWidth="100dp"
                android:id="@+id/imageButton3" android:layout_weight="1"
                android:cropToPadding="true" android:layout_gravity="center"
                android:layout_width="0dp" android:padding="0dp"
                android:layout_height="250dp" />
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_3" android:maxWidth="100dp"
                android:id="@+id/imageButton4" android:layout_weight="1"
                android:cropToPadding="true" android:layout_gravity="center"
                android:layout_width="0dp" android:padding="0dp"
                android:layout_height="250dp" />
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_4" android:maxWidth="100dp"
                android:id="@+id/imageButton5" android:layout_weight="1"
                android:cropToPadding="true" android:layout_gravity="center"
                android:layout_width="0dp" android:padding="0dp"
                android:layout_height="250dp" />
            <ImageButton android:minWidth="20dp"
                android:adjustViewBounds="true" android:layout_margin="0dp"
                android:src="@drawable/sample_5" android:maxWidth="100dp"
                android:id="@+id/imageButton6" android:layout_weight="1"
                android:cropToPadding="true" android:layout_gravity="center"
                android:layout_width="0dp" android:padding="0dp"
                android:layout_height="250dp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我的评论只是一些小建议,因为我不太确定你想要用这种布局实现什么,或者它最终应该是什么样子,也许你可以稍微详细一点或添加一个小图片以便更好地理解。< / p>

我认为你的linearLayout1缺少一个方向,但这不应该是关键的,因为它应该默认为垂直(我认为)。

难道你不能将ImageView的图像作为linearLayout2的backgroundImage吗?然后你可以跳过ImageView。

然后我将大部分ImageButton属性放入样式定义中。这使您可以更轻松地更改设置并清理代码([Android开发人员:应用样式和主题])1

正如我之前所说过的,也许你可以详细说明它应该是什么样子,然后它会更容易帮助。