2017-06-16 73 views
0

我有一些解决方案how to change a drawableLeft icon size on a button?,但它不适合我。如何更改drawableLeft图标大小?

我的按键布局:

<RelativeLayout 
     android:id="@+id/twoButtonLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#eceef5" 
     android:visibility="visible"> 

     <Button 
      android:id="@+id/goToPersonalPage" 
      android:layout_width="150dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="31dp" 
      android:drawableLeft="@drawable/drawable_left_green" 
      android:paddingLeft="18dp" 
      android:drawablePadding="-10dp" 
      android:background="@drawable/button_oval" 
      android:text="ICon" 
      android:textColor="#29395e" 
      android:textSize="18dp" /> 

     <Button 
      android:id="@+id/logOutPersonal" 
      android:layout_width="150dp" 
      android:layout_height="50dp" 
      android:layout_alignParentRight="true" 
      android:layout_marginRight="30dp" 
      android:background="@drawable/button_oval" 
      android:text="@string/logOut" 
      android:textColor="#29395e" 
      android:textSize="18dp" /> 

    </RelativeLayout> 

我通过drawable_left_green.xml调整按钮的大小:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    // I think it should be more smaller if i set 15sp. 
    <item 
     android:drawable="@mipmap/ic_launcher" 
     android:width="15sp" 
     android:height="15sp" 
     /> 

</layer-list > 

当我编译项目它(照片2)并不像与预览布局(照片1 ): enter image description here enter image description here

我想不通为什么它会发生LIK这个,有人可以教我如何解决它? 任何帮助,将不胜感激,在此先感谢。

+2

设置比例绘制考虑这个链接https://stackoverflow.com/a/7538641/7104450 –

+0

而且你还可以使用花哨的按钮,这种类型的任务了很好的图书馆这里是链接https://github.com/medyo/Fancybuttons –

+0

我的Android Studio的预览看起来像第二个图像。 – wrkwrk

回答

2

你从我的链接中得到答案,但我想给你答案,所以它会帮助别人。

代码

Drawable drawable = ContextCompat.getDrawable(YourActivity.this,R.drawable.akshay); 
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5), 
        (int)(drawable.getIntrinsicHeight()*0.5)); 
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight); 
Button btn = findViewbyId(R.id.yourbtnID); 
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
+0

非常感谢! –

+0

需要API 23及更高版本? – sasan

+0

它是说Drawable drawable = getResources()。getDrawable(R.drawable.akshay); getDrawable depricated @sasan –