java – 一个按钮的Android背景文本图标

我想有一个图像设置为背景上的文字和文本左侧的图标.
在iPhone上很容易,但是无法弄清楚如何在 Android上做到这一点,可以调整大小的按钮并保持图标的文字位置和距离.

苹果手机:

Android我有这个:

xml代码是:

<Button
    android:id="@+id/btSettings"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/tvWhatever"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp"
    android:background="@drawable/bt_general"
    android:drawabletop="@drawable/settings_selected"
    android:text="@string/settings"
    android:textColor="#000000" />

here获取代码.

如果我使用android:drawableLeft,那么图标就会到最左边的部分.

如果我开始玩半硬编码的paddings,比我将有不同的看法diff devives :(手机和桌子)

如果我添加的android:gravity =“left | center_vertical”比它将看起来像这样:

文本是可变的:当用户更改语言时,它将会改变.

如何做到正确?

我不想低估任何人的答案,但请阅读这个问题,不要建议我已经尝试了.还告诉硬编码的修补程序不能正常工作.

这不是一个功课,而是一个商业软件的一部分.

这里是一个建议的代码从答案:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bt_general"
        android:padding="20dip" >

        <ImageView
            android:id="@+id/xIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dip"
            android:src="@drawable/settings_selected" />

        <TextView
            android:id="@+id/xSettingsTxt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/settings"
            android:textColor="#000000" />
    </RelativeLayout>

你觉得如何在galaxy S4上看起来像android:layout_marginLeft =“10dip”?这是一个预览:

这不是我所问的.由于手机具有HPDI,较小的屏幕和平板电脑具有MDPI和广泛的分辨率,因此“dip”或“dp”或“px”不应该作为距离左上角的距离使用.简单不适用于mdpi和xxhdpi.

Nizam answer非常接近一个很好的解决方案:

解决方法

也许你应该使用RelativeLayout与圆角,而不是将TextView和ImageView放在其中.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...