Android ScaleToFit布局Quandry

Android ScaleToFit布局Quandry,android,layout,Android,Layout,我正在努力学习更多关于Android布局系统的知识;这对我来说是一次学习经历。我目前正在尝试创建一个基本上相当于两个线性布局的布局:一个填充父垂直,一个内部填充宽度水平,这样我有一个ImageView横幅[在外部],然后七个ImageButton列填充视图的宽度[在内部] 我的问题来了,因为我需要ImageButton的内容按比例填充整个按钮视图[列],但要尊重ImageButton的边界,因此如果一个小图像或大图像是源,它将在ImageButton中居中,填充其垂直和水平尺寸,并居中-我无法控

我正在努力学习更多关于Android布局系统的知识;这对我来说是一次学习经历。我目前正在尝试创建一个基本上相当于两个线性布局的布局:一个填充父垂直,一个内部填充宽度水平,这样我有一个ImageView横幅[在外部],然后七个ImageButton列填充视图的宽度[在内部]

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

我以为CenterCrop会这么做,但nada对我来说

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

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

    <?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>

我的评论只是一些小建议,因为我不确定你想用这个布局实现什么,或者它最终应该是什么样子,也许你可以详细阐述一下,或者添加一个小图片,以便更好地理解

我认为您的linearLayout1缺少方向,但这并不重要,因为它应该默认为垂直(我认为)

您不能将ImageView的图像作为线性布局2的背景图像吗?然后可以跳过ImageView

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

正如我之前所说的,也许你可以详细说明一下它应该是什么样子,这样会更容易提供帮助