创建cata
后,我注意到尽管设置属性,ana
控件仍未水平对齐中心。可以做些什么来解决这个问题?我尝试使用cata
,但这似乎不起作用。
PercentRelativeLayout
答案 0 :(得分:3)
它可能看起来像一个错误,但实际上它与SwitchCompat
无关(同时也为Switch
复制了问题。
但它也与PercentRelativeLayout
无关。甚至与RelativeLayout
无关。
它与宽度不同于wrap_content
的Switch有关(据我所见)。
简单示例:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<android.support.v7.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"/>
</FrameLayout>
gravity
和layout_gravity
都不会影响开关的位置 - 它与右侧对齐。
可以用FrameLayout
替换LinearLayout
,结果将是相同的。
要理解为什么会发生这种情况,应该尝试在Switch / SwitchCompat源代码中找到答案(对不起,我还没有尝试过这样做......)
所以,要解决你的问题,我唯一能想到的就是黑客攻击:用一些布局包裹SwitchCompat
。并使用wrap_content
作为SwitchCompat
宽度。
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<ImageView
android:id="@+id/imageView1"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/avatar" />
<FrameLayout
android:id="@+id/switch_tgl"
app:layout_widthPercent="20%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_toRightOf="@id/imageView1">
<android.support.v7.widget.SwitchCompat
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.AppCompat.Light"
android:background="@android:color/transparent" />
</FrameLayout>
<ImageView
android:id="@+id/imageView2"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/avatar"
android:layout_toRightOf="@id/switch_tgl"/>
</android.support.percent.PercentRelativeLayout>
希望有所帮助