android:drawableRight 对比 android:drawableEnd

android:drawableRight vs android:drawableEnd

如果我在按钮上使用 android:drawableRight="@drawable/my_image"

<Button
        android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_button"
        android:drawableRight="@drawable/my_image"
        android:drawablePadding="4dp"/>

然后编辑器中的 warning/suggestion 告诉我:

Consider replacing android:drawableRight with android:drawableEnd="@drawable/my_image" to better support right-to-left layouts

这是什么意思?你不能再使用 android:drawableRight 了吗?

某些国家/地区的语言是从右到左阅读的。如果您在编写布局元素时没有考虑到这一点,您的应用程序在他们的设备中可能看起来不正确。本质上,在布局元素中将 left 替换为 start 并将 right 替换为 end。这适用于上述 XML 属性的 XML 属性 values。如果您进入开发者选项并点击强制RTL布局,您可以在从右到左的条件下查看结果并尝试您的布局。

这是我最近使用的布局示例。请特别注意 EndXML 属性 value[=26= 中的使用] XML 属性。

<LinearLayout
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:gravity="end">

    <TextView
        android:id="@+id/bid_price"
        style="@style/BidPriceTextStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingEnd="10dp"
        tools:text="1000.00" />
    <TextView
        android:id="@+id/change"
        android:background="@drawable/percent_change_pill"
        style="@style/PercentChangeTextStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingStart="3dp"
        android:paddingEnd="3dp"
        tools:text="100%" />
</LinearLayout>

除了大牛的回答drawableEnddrawableStart可以用于API_14+。所以如果你使用minSdkVersion < 14,除了[=12]你还必须使用drawableRightdrawableLeft =]drawableEnddrawableStart.