我希望得到这样的东西
<Button
android:textColor="@android:color/white"
android:drawableLeft="@drawable/ic_facebook"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="Login with facebook"
android:background="@color/facebook_theme_primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
问题在于,如果图像较大,则图像太大会使按钮变大。 我想让它像上面的照片一样合适..
我的输出是
实现这一目标的最佳方式是什么,并且可以从XML中获得?
完整布局XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:flatui="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".HomeActivity">
<Button
android:textColor="@android:color/white"
android:drawableLeft="@drawable/ic_facebook"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="Login with facebook"
android:background="@color/facebook_theme_primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 0 :(得分:0)
最好的方法是在水平LinearLayout
中使用 layout_weight 属性答案 1 :(得分:0)
我同意LinearLayout并设置OnClickListener另一个解决方案是:
android:layout_width="match_parent"
android:layout_height="20dp"
20dp只是猜测,尝试直到你得到正确的大小
答案 2 :(得分:0)
我发现通过XML没有解决我的问题的方法。
我需要做的是创建普通按钮,没有图像,从java代码添加图像。
Button button = (Button) findViewById(R.id.button);
Drawable drawable = getResources().getDrawable(R.drawable.ic_facebook);
drawable.setBounds(0, 0, (int) (button.getHeight()),
(int) (button.getHeight() )); // yes, i know (int)(int) is redundant, you can remove the cast if you are only using integers
button.setCompoundDrawables(drawable, null, null, null); // this will set the left drawable
就我而言,图像是正方形。如果您希望图像更小,只需将大小乘以0.X ..,
drawable.setBounds(0, 0, (int) (button.getHeight() * 0.5),
(int) (button.getHeight() *0.5 ));
如果您的图像不是正方形,我建议将其缩小以适应高度..
drawable.setBounds(0, 0, (int) (button.getHeight()),
(int) (drawable.getIntrinsicWidth() / drawable.getIntrinsicHeight() * button.getHeight()));
注意强> 仅在onWindowFocusChanged方法中使用它。为什么?在onCreate方法中,按钮宽度/高度为0。