如何制作方形图像按钮?

时间:2017-05-13 17:05:50

标签: java android xml

android studio中是否有文件xml:

    <LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<imageButton 
android:id="@+id/imageButton1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:background="@android:color/transparent" 
android:scaleType="fitXY" /> 

<imageButton 
android:id="@+id/imageButton2" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:background="@android:color/transparent" 
android:scaleType="fitXY" /> 

</LinearLayout> 

我需要有2个方形按钮的全宽,这怎么办?

3 个答案:

答案 0 :(得分:3)

您可以通过扩展ImageButton View.In onMeasure()在此处制作自定义视图,您可以将ImageButton的高度设置为等于其宽度。您也可以在XML中使用此类。

以下是片段: -

public class SquareImageButton extends ImageButton {


    public SquareImageButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width=getMeasuredWidth();
        setMeasuredDimension(width,width);
    }
}

答案 1 :(得分:1)

1。以编程方式获取width的{​​{1}}。

display

2。最后,通过设置新的DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int width = displayMetrics.widthPixels;

,使用此width值制作Square Button
LayoutParams(width, width).

3。使用ImageButton imageButton1 = (ImageButton) findViewById(R.id.imageButton1); ImageButton imageButton2 = (ImageButton) findViewById(R.id.imageButton2); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, width); imageButton1.setLayoutParams(params); imageButton2.setLayoutParams(params); 作为ScrollView的容器,使您的布局LinearLayout在UI上显示两个按钮并更新scroll-able如下:

XML

<强>输出:

enter image description here

仅供参考,<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageButton android:id="@+id/imageButton1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/holo_red_light" android:scaleType="fitXY" /> <ImageButton android:id="@+id/imageButton2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/holo_blue_light" android:scaleType="fitXY" /> </LinearLayout> </ScrollView> ImageButton1色,REDImageButton2色。两者都是BLUE形状。

希望这会有所帮助〜

答案 2 :(得分:1)

首先,你需要一个方形图像放入imageButton。然后,您将AdjustViewBounds设置为true。然后将scaletype设置为FitXY。我使用线性布局并使用权重和视图来调整大小和位置。适合缩放和imageButton将正方形。这是我在xml中的ImageButton:

android:scaleType="fitXY"
android:layout_weight="1"
android:adjustViewBounds="true"