4

我有一个图像按钮。如果需要,我可以用自定义视图替换它。我需要将图像按钮的高度指定为 Fill_parent。使图像拉伸到屏幕中的可用高度。这样做时,我不想松开宽度。我希望它是高度的最小值,如果大于高度,那么这不是问题。我不希望它这么长。当我这样做时,我还想保持纵横比。请让我知道我需要调整的参数以获得这种视图。感谢您在这方面提供任何帮助。感谢您的帮助和时间。

编辑:下面是完整的 xml,我在其中尝试使用高度为 fill_parent 的水平滚动视图,并尝试用适合其高度的图像填充它,并根据纵横比扩展或收缩宽度。即使图像很小,我也想放大以使高度始终占据水平滚动视图。

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="vertical" android:layout_weight="3"
        android:background="#666666">
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="vertical" android:layout_weight="7"
        android:background="#888888">
        <HorizontalScrollView android:id="@+id/horizontalScrollView1"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <LinearLayout android:id="@+id/linearLayout1"
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                android:orientation="horizontal">

                <ImageView android:src="@drawable/image1"
                    android:layout_weight="1" android:layout_width="wrap_content"
                    android:layout_height="fill_parent" android:adjustViewBounds="true"
                    android:id="@+id/attachimagebutton_2" />

                <ImageView android:src="@drawable/image2"
                    android:layout_weight="1" android:layout_width="wrap_content"
                    android:layout_height="fill_parent" android:adjustViewBounds="true"
                    android:id="@+id/attachimagebutton_2" />

            </LinearLayout>
        </HorizontalScrollView>
    </LinearLayout>
</LinearLayout>
4

3 回答 3

2

好吧,没有必要让它成为ImageButton一个按钮,因为你可以在 android 中将任何东西变成一个按钮......

您可以ImageView在您的 XML 中添加一个,给它一个id,图像源,高度为fill_parent,宽度为wrap_content,并使用 固定纵横比android:adjustViewBounds="true"。然后你也可以android:clickable="true"通过你的id. 然后你可以添加onClickListener.

希望它有效

于 2011-06-21T23:54:51.063 回答
1

我建议采用不同的方法,应用父布局gravity="center_horizontal",下一步是使用自定义视图扩展ImageButton类以将其大小设置为正方形,这非常简单。

因此,创建新类,命名它SquareImageButton,然后扩展ImageButton。添加带有上下文和属性的默认构造函数并让它调用超级函数,您不需要添加任何其他内容。

现在覆盖该onMeasure()方法(它为您提供 int 值的测量宽度和高度),取最小值,并(根据方法要求)setMeasuredDimension(w, h)使用新的最小值调用,使其为正方形。它对我有用,如果你有点迷路,这里是代码:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int minDimension = Math.min(widthMeasureSpec, heightMeasureSpec);
    setMeasuredDimension(minDimension, minDimension);
}
于 2013-06-17T15:38:31.833 回答
0

试试这个代码,它对我有用。

public class ButtonSquare extends Button {
public ButtonSquare(Context context) {
    super(context);
}

public ButtonSquare(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public ButtonSquare(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    super.onMeasure(
            MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
            MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
}

}

于 2016-01-20T03:16:14.897 回答