一、代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatSeekBar
android:layout_width="240dp"
android:layout_height="wrap_content"
android:background="#F00"
android:paddingHorizontal="40dp" />
<androidx.appcompat.widget.AppCompatSeekBar
android:layout_width="240dp"
android:layout_height="wrap_content"
android:background="#F00" />
</LinearLayout>
二、效果
可以看出上下两个AppCompatSeekBar的内边距是一样的,为什么通过paddingHorizontal设置的值会失效呢?
三、原因
经过排查发现manifest文件里面有一句android:supportsRtl="true",当支持从右往左布局为真时paddingHorizontal的设置是无效的,而且paddingLeft和paddingRight设置的值也是无效的,此时只能通过paddingStart和paddingEnd来设置水平内边距。也可以将android:supportsRtl="true"去掉,默认是不支持从右往左布局的,此时我们就可以用paddingHorizontal来设置想要的水平内边距。