我想减小 Switch 的宽度。当前的解决方案如何更改 Switch Widget 的大小和如何更改 Android 的 Switch 轨道的宽度?没有解决我的问题。android:switchMinWidth刚刚定义了 minWidth,但我希望它小于2 x thumbWidthsize。
我深入研究了SwitchCompat班级的onMeasure()功能。宽度的定义方式如下。
// Adjust left and right padding to ensure there's enough room for the
// thumb's padding (when present).
int paddingLeft = padding.left;
int paddingRight = padding.right;
if (mThumbDrawable != null) {
final Rect inset = DrawableUtils.getOpticalBounds(mThumbDrawable);
paddingLeft = Math.max(paddingLeft, inset.left);
paddingRight = Math.max(paddingRight, inset.right);
}
final int switchWidth = Math.max(mSwitchMinWidth,
2 * mThumbWidth …Run Code Online (Sandbox Code Playgroud) 我正在使用Android Studio并在我的主要活动中有一个SwitchCompat小部件.它的默认fontfamily是sans-serif-medium,我把它改成了quicksand_light.我还有一些TextViews,每个fontfamily都设置为quicksand_light.在我的活动的xml文件的设计选项卡上,它显示了具有quicksand_light fontfamily的SwitchCompat,就像TextViews一样,但是当我在手机或模拟器上运行它时,SwitchCompat的fontfamily是sans-serif-medium.有什么额外的东西我需要做更改fontfamily或这是一个错误或这只是我?
由于appcompat v7缺失了SwitchCompatPreference,似乎有必要自己创建它.
怎么能实现这一目标?我google了一下,找到了一个教程DialogPreference.我试图采用它,SwitchCompatPreference但在我的xml布局中,它总是说在偏好xml中不允许这个类.
我需要做什么?
我的问题是关于Android SwitchCompat.
我想要的风格:
但我的开关风格是:
我的拇指宽度有点不对劲。(请不要介意轨道大小)
这是我的 xml 代码:
<android.support.v7.widget.SwitchCompat
app:switchMinWidth="@dimen/_108px"
android:layout_width="@dimen/_108px"
android:layout_height="@dimen/_60px"
android:thumb="@drawable/switch_thumb_selector"
app:track="@drawable/switch_track_selector" />
Run Code Online (Sandbox Code Playgroud)
android:layout_width有助于设置轨道的宽度,并android:layout_height有助于设置拇指的高度。但我想设置拇指的宽度。如何设置拇指宽度?
目前我的SwitchCompat外观如下图(顶部),但是我需要在关闭状态下显示可见文本。
我将如何实现这一目标?

我有一个SwitchCompat:
<android.support.v7.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some title"/>
Run Code Online (Sandbox Code Playgroud)
我想阻止点击文字标题.当我点击文字标题时,切换开关.但我想切换只在我点击切换图标.
可能吗?或者我必须为此创建两个单独views的:一个TextView用于标题,一个用于SwitchCompat没有文本?
我知道这个问题已经被问过好几次了,我已经阅读了所有这些问题,并且都匹配了所有依赖关系,因此它们具有相同的版本,但是此错误仅在添加Switch Compat之后才开始发生,您也可以通过按结构查看崩溃报告来看到。此错误不是在所有设备上都显示,而是在崩溃报告中显示给某些设备,也没有针对此崩溃的特定Android。由于Android应用程序捆绑包,我正在使用beta版本的android,这件事在非捆绑包(Apk)中不会发生。
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.App/com.App}: android.view.InflateException: Binary XML file line #100: Error inflating class android.support.design.widget.NavigationView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.access$1000(ActivityThread.java:211)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by android.view.InflateException: Binary XML file line #100: Error inflating class android.support.design.widget.NavigationView
at android.view.LayoutInflater.createView(LayoutInflater.java:640)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
at android.support.v7.app.l.b(Unknown Source)
at android.support.v7.app.e.setContentView(Unknown Source)
at com.App.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:6575)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at …Run Code Online (Sandbox Code Playgroud) android android-studio navigation-drawer switchcompat android-app-bundle
我已经将我的项目迁移到AndroidX. 我的MainActivity扩展FragmentActivity 我的第一个SwitchCompat看起来全是白色,当我第一次来到那个屏幕时它根本没有任何颜色。SwitchCompat 是白色的。它下面的所有其他 SwitchCompact 都具有正确的颜色。如果我按回并再次回到那个屏幕,我的第一个SwitchCompact收到正确的颜色并且看起来不错。
如果我改变了我的MainActivty扩展AppCompactActivity,那么当我第一次到达那个屏幕时一切都很好。有谁知道这里有什么问题,因为在迁移之前我MainActivity也扩展了FragmentActivity,一切都很好。我的xml代码在这两种情况下都是一样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".BlankFragment">
<androidx.appcompat.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我需要像这样在我的应用程序中实现一个按钮

我使用了 SwitchCompat 按钮,但我最接近的是此时,

有两个主要问题:
1 -当屏幕尺寸改变时按钮的宽度不能正确调整(drawable 被截断,变得太小等),重要的是宽度正确地占据父视图(一个小的线性布局包围它)
2 -我无法理解如何获得 Switch Track 中的字母
有没有可能用一个开关按钮来达到这个结果?如何?我应该使用另一个视图而不是切换按钮吗?哪一个?
我偶然发现了这个项目,但它似乎有点过时了
https://github.com/pellucide/Android-Switch-Demo-pre-4.0/tree/master/
