在ImageButton的飞度形象的Android(Fit Image in ImageButton

2019-07-20 16:09发布

我在我的活动6 ImageButton的,我通过在他们的代码设置的图像(不使用XML)。

我希望他们能够覆盖按钮区的75%。 但是,在一些图像的覆盖面积少,有的太大,放不进的ImageButton。 如何以编程方式调整,并告诉他们? 下面是屏幕截图

下面是XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     >
   <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">
        <ImageButton          

            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_topleft"
        android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"
            />
        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_topright"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_repeat"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     
             />

              <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_next"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     
             />

    </LinearLayout>    
   <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_bottomleft"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"                                 
             />
        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_bottomright"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"                  
            />        
    </LinearLayout>        

</LinearLayout>

和myClass.java的一个片段:

public void addImageButtons()
    {
        iB_topleft = (ImageButton) findViewById(R.id.button_topleft);
        iB_topright = (ImageButton) findViewById(R.id.button_topright);
        iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft);
        iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright);
        iB_next = (ImageButton) findViewById(R.id.button_next);
        iB_repeat = (ImageButton) findViewById(R.id.button_repeat);
    }

    public void setImageNextAndRepeat()
    {

    iB_topleft .setImageResource(R.drawable.aa);
        iB_topright.setImageResource(R.drawable.bb);   

    iB_bottomleft.setImageResource(R.drawable.cc);
        iB_bottomright.setImageResource(R.drawable.dd);   

        iB_next.setImageResource(R.drawable.next);
        iB_repeat.setImageResource(R.drawable.repeat);      
    }

Answer 1:

我希望他们能够覆盖按钮区的75%。

使用android:padding="20dp" (根据需要进行调整的填充)来控制的图像上的按钮多少占用。

但其中一些图像覆盖面积少,有的太大,放不进的ImageButton。 如何以编程方式调整,并告诉他们?

使用android:scaleType="fitCenter"有Android的缩放图像,和android:adjustViewBounds="true"有他们自己的范围调整由于缩放。

所有这些属性可以在代码上的每个设置ImageButton在运行时。 但是,在我看来,更容易设置和预览XML格式。

另外, 不要使用sp比文字大小等什么,这取决于文本大小偏好的用户设定缩放,让您的sp尺寸将大于您的预期,如果用户有一个“大”的文字设置。 使用dp相反,因为它不是由用户的文字大小喜好缩放。

下面是每个按钮应该是什么样子的一个片段:

    <ImageButton
        android:id="@+id/button_topleft"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="0dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:padding="20dp"
        android:scaleType="fitCenter" />



Answer 2:

我使用下面的代码xml

android:adjustViewBounds="true"
android:scaleType="centerInside"


Answer 3:

尝试使用android:scaleType="fitXY"在我-XML的ImageButton



Answer 4:

我使用android:scaleType="fitCenter"满意。



Answer 5:

请参考以下链接,并设法找到你真正想要的东西:

ImageView.ScaleType中心为中心的视图中的图像,但执行不结垢。

ImageView.ScaleType CENTER_CROP缩放图像均匀(保持图像的纵横比),以使图像的两个维度(宽度和高度)将等于或小于所述视图(负填充)的对应尺寸大。

ImageView.ScaleType CENTER_INSIDE缩放图像均匀(保持图像的纵横比),以使图像的两个尺寸(宽度和高度)会比图(减去填充)的对应尺寸等于或更少。

ImageView.ScaleType FIT_CENTER量级利用中心的形象。

ImageView.ScaleType FIT_END规模使用END图像。

ImageView.ScaleType FIT_START规模使用START图像。

ImageView.ScaleType FIT_XY规模使用填充图像。

绘图时ImageView.ScaleType MATRIX量表使用图像矩阵。

https://developer.android.com/reference/android/widget/ImageView.ScaleType.html



Answer 6:

我最近偶然被发现,自从你有,你可以设置一个onclicklistener这里图像的ImageView的更多的控制权是一个动态创建图像按钮的样本

private int id;
private bitmap bmp;
    LinearLayout.LayoutParams familyimagelayout = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT );

    final ImageView familyimage = new ImageView(this);
            familyimage.setBackground(null);
            familyimage.setImageBitmap(bmp);
            familyimage.setScaleType(ImageView.ScaleType.FIT_START);
            familyimage.setAdjustViewBounds(true);
            familyimage.setId(id);
            familyimage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //what you want to do put here
                }
            });


Answer 7:

它在我的情况下运作良好。 首先,你下载图像,并将其重命名为iconimage,其定位在绘制的文件夹。 您可以通过设置改变大小android:layout_widthandroid:layout_height 。 最后,我们有

 <ImageButton
        android:id="@+id/answercall"
        android:layout_width="120dp"
        android:layout_height="80dp"
        android:src="@drawable/iconimage"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:scaleType="fitCenter" />


文章来源: Fit Image in ImageButton in Android