保持Android ImageButton的宽高比

时间:2013-08-11 14:33:34

标签: java android xml android-layout

我已经查看了之前有关此主题的问题,但这些问题似乎都没有奏效。 我有一个水平方向的linearlayout,其中有两个(应该是)完美的方形ImageButtons。 linearlayout成功跨越屏幕宽度,ImageButtons的宽度非常完美;然而,它们的渲染高度应该是它们的两倍。我已经尝试使用fitStart和fitEnd的scaleTypes以及fitXY,它们仍然呈现相同 - 就好像它们看到父的宽度并使用它来计算它们的缩放高度而不考虑其他对象的宽度在线性布局中。所以我最终得到了两个2:1宽高比按钮,这个代码紧挨着这个代码:

<LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_margin="10dp"
        android:scaleY="1"
        android:orientation="horizontal"
        >

        <ImageButton
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/tapdat_tap2"
            android:scaleType="fitXY"/>

        <ImageButton
            android:id="@+id/button3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="0dp"
            android:layout_weight="1"
            android:background="@drawable/tapdat_nottap"
            android:scaleType="fitXY"/>

    </LinearLayout>

此外,我尝试在linearlayout标记中放置一个scaleY =“。5”并使用正确的高度渲染,但是它会留下大量不可用的空间,其中多余的高度被切掉,其他内容无法填充。 (我也尝试将这个scaleY单独放在ImageButtons上,结果相同。)

1 个答案:

答案 0 :(得分:0)

这是因为您没有以任何方式设置高度,比率取决于宽度。

// Gets the layout params that will allow you to resize the layout
LayoutParams params = layout.getLayoutParams();
// Changes the height and width to the specified *pixels*
params.height = layout.getWidth();