ImageButton的宽高比不正确

时间:2018-12-22 23:17:09

标签: android android-linearlayout imagebutton

我正在尝试将ImageButton和TextView并排放置在 LinearLayout 中,并且按钮的垂直方向足够大以适合布局-希望这应该适合宽度。布局的其余部分应由文本视图占据。

此刻,我的xml文件中具有以下布局:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".08"
    android:background="#004D79"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/helpButton"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:cropToPadding="false"
        android:layout_margin="3dp"
        android:adjustViewBounds="true"
        android:background="@drawable/help" /> 

      <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#000000"
        android:text="Some placeholder text"
        android:textColor="#ffffff"
        />

  </LinearLayout>

此布局占用了8%的垂直空间。该按钮的图片为500x500。 但是,我遇到了一些问题! 当我在“原样”上方运行布局时,图像按钮是正确的高度,但是它占据了布局的整个宽度;根本没有文本视图-看来android:adjustViewBounds="true"无法正常工作。 但是,如果我将android:background="@drawable/help"替换为android:src="@drawable/help",则会在布局的左侧得到一个小的正方形区域,但是上面没有图像。文本视图位于“按钮”的右侧,但未覆盖其余的布局;包裹起来,使其大小足以容纳占位符文本。

我是否需要以编程方式调整应用程序中按钮和文本视图的大小,例如 OnMapReady(...)

编辑:我刚刚验证了图像文件在 res / drawable / help.png 中-但是为什么它应该与背景一起显示(尺寸错误),而与src一起显示(尺寸正确) )对我来说是个谜。

1 个答案:

答案 0 :(得分:0)

android:adjustViewBounds需要与android:src一起使用,当android:adjustViewBounds为true时,ImageButton将调整其边界以保留其可绘制对象的纵横比,尺寸可能会变大。

android:srcandroid:widthandroid:height确定视图的大小,android:background将被拉伸以填充整个视图,android:scaleType控制图像的方式应该调整大小或移动以匹配此ImageButton的大小

您想要的布局可能必须设置android:srcandroid:scaleType属性

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal"
    android:gravity="center_vertical">

    <ImageButton
        android:id="@+id/helpButton"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_margin="3dp"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>