gpt4 book ai didi

android - 前 Lollipop 设备上的 SwitchCompat

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:17 24 4
gpt4 key购买 nike

我正在尝试从 AppCompat 实现 SwitchCompat,但它在不同版本的设备上看起来不同。在 Lollipop & Froyo 上它看起来不错,但在 Gingerbread 和 KitKat 上它看起来不像一个开关。

代码:

<android.support.v7.widget.SwitchCompat
android:id="@+id/label_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="No"
android:textOn="Yes"
android:checked="false" />

我能否让这些开关在所有版本中看起来都一样,或者至少让它们看起来像一个开关?

最佳答案

我的应用程序的 Min sdk 是 GingerBread,我遇到了同样的问题,最后我找到了解决方案。为了使 SwitchCompat 在所有 android 版本中保持一致,我在 res/drawable 文件夹中使用了两个 drawable,一个用于 thumb,一个用于 跟踪。并以 java 代码而非 xml 将它们分配给 SwitchCompat。这是您应该使用的代码。

SwitchCopmat 小部件:

    <android.support.v7.widget.SwitchCompat
android:id="@+id/label_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

拇指可绘制,switch_compat_thumb.xml

    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="@dimen/switch_compat_thumb_margin"
android:left="@dimen/switch_compat_thumb_margin"
android:right="@dimen/switch_compat_thumb_margin"
android:top="@dimen/switch_compat_thumb_margin">

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape android:shape="oval">
<size
android:width="@dimen/switch_compat_thumb_size"
android:height="@dimen/switch_compat_thumb_size"/>
<solid android:color="@android:color/red"/>
</shape>
</item>

<item>
<shape android:shape="oval">
<size
android:width="@dimen/switch_compat_thumb_size"
android:height="@dimen/switch_compat_thumb_size"/>
<stroke
android:width="@dimen/switch_compat_thumb_stroke_width"
android:color="@android:color/red"/>
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>
</item>

drawable for track, switch_compat_track.xml

    <?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/switch_compat_track_radius"/>
<stroke
android:width="@dimen/switch_compat_track_stroke_width"
android:color="@android:color/red"/>
<solid android:color="@android:color/transparent" />

然后在java中找到后,将thumbtrack赋值给java代码中的SwitchCompat:

  final SwitchCopmat switchCompat = (SwitchCopmat) findViewById(R.id.label_switch);

//add thumb and track drawable in java since it doesn't work on xml for gingerbread
switchCompat.setThumbDrawable(getResources().getDrawable(R.drawable.switch_compat_thumb));
switchCompat.setTrackDrawable(getResources().getDrawable(R.drawable.switch_compat_track));

关于android - 前 Lollipop 设备上的 SwitchCompat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com