【发布时间】:2013-10-08 15:18:02
【问题描述】:
我想将图像设置为背景上的文本和文本左侧的图标。 在 iPhone 上非常简单,但在 Android 上不知道如何做到这一点,调整按钮的大小并正确保持图标 + 文本的位置和距离。
iPhone:
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 ,则图标将转到最左侧。
如果我开始使用半硬编码填充,那么我会对差异设备有不同的看法:(电话和桌子)
如果我添加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" 会是什么样子?这是一个预览:
这不是我问的。 “dip”或“dp”或“px”不应该在任何地方使用,因为手机有 HPDI,屏幕更小,平板电脑有 MDPI 和宽分辨率。 Simple 不适用于 mdpi 和 xxhdpi。
Nizam answer 非常接近一个好的解决方案:
【问题讨论】:
-
你试过了吗,android:drawablePadding
-
@PiyushGupta 需要维度,而不是 drwable:原因:java.lang.UnsupportedOperationException:无法转换为维度:type=0x3
-
@matheszabi 检查我在编辑部分放置的布局,这将起作用。
标签: java android xml layout user-interface