代码之家  ›  专栏  ›  技术社区  ›  Sahand

无法重新缩放可拉伸按钮

  •  0
  • Sahand  · 技术社区  · 6 年前
    private float iconScale = 0.05f;    
    // Set size of drawables in buttons
    Drawable drawable = getResources().getDrawable(R.drawable.cutlerywhite);
    drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()),
            (int)(drawable.getIntrinsicHeight()));
    ScaleDrawable sd = new ScaleDrawable(drawable, 0, iconScale, iconScale);
    
    fnbButton.setCompoundDrawables(sd, null, null, null); //set drawableLeft for example
    

    我正试着缩小一个用于 Button . 现在,我的按钮上什么也没出现:

    enter image description here

    左边应该有一个抽屉。 这里有什么问题?我做的和我在这里看到的其他人做的完全一样。

    <Button
        android:id="@+id/fnbButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_button_blue"
        android:padding="5dp"
        android:text="@string/fnb_button"
        android:textAllCaps="false"
        android:textColor="@color/white"
        app:layout_constraintBaseline_toBaselineOf="@id/otherButton"
        app:layout_constraintEnd_toEndOf="parent" />
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   SergeyBukarev    6 年前

    也许这个选择会有帮助

       private void useScaledDrawableLeft(Button buttonView, float scale, @DrawableRes int imageResource) {
            Resources res = getResources();
            BitmapDrawable bd = (BitmapDrawable) res.getDrawable(imageResource);
            Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(),
                    (int) (bd.getIntrinsicHeight() * scale),
                    (int) (bd.getIntrinsicWidth() * scale),
                    false);
    
            BitmapDrawable scaleDrawable = new BitmapDrawable(b);
            buttonView.setCompoundDrawablesWithIntrinsicBounds(scaleDrawable, null, null, null);
    }
    
        2
  •  0
  •   SergeyBukarev    6 年前

    试试这个

    Drawable drawable = getResources().getDrawable(R.drawable.cutlerywhite);
    ScaleDrawable sd = new ScaleDrawable(drawable, Gravity.CENTER, iconScale, iconScale);
    Drawable d1 = sd.getDrawable();
    d1.setLevel(1);
    sd.setLevel(1);
    fnbButton.setCompoundDrawablesWithIntrinsicBounds(sd, null, null, null);
    
        3
  •  0
  •   Sahand    6 年前

    Drawable drawableFnb = getResources().getDrawable(R.drawable.cutlerywhite);
    Drawable drawableSunbed = getResources().getDrawable(R.drawable.logowhite);
    
    ScaleDrawable sdFnb = new ScaleDrawable(drawableFnb, Gravity.LEFT, 1, 1);
    ScaleDrawable sdSunbed = new ScaleDrawable(drawableSunbed, Gravity.LEFT, 1, 1);
    Drawable d1 = sdFnb.getDrawable();
    Drawable d2 = sdSunbed.getDrawable();
    
    Dims fnbDims = getIconDims(drawableFnb);
    Dims sunbedDims = getIconDims(drawableSunbed);
    
    d1.setBounds(0, 0, fnbDims.getWidth(), fnbDims.getHeight());
    d2.setBounds(0, 0, sunbedDims.getWidth(), sunbedDims.getHeight());
    
    fnbButton.setCompoundDrawables(d1, null, null, null);
    sunbedButton.setCompoundDrawables(d2, null, null, null);