Android版本5.0中的开关控件在Dialog中不起作用

我在我的应用程序中使用了下面的switch

 <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="" android:thumb="@drawable/toggle_button_color" android:textOff="@string/text_estimate" android:textOn="@string/text_accurate" android:textColor="@color/white" /> 

在上面的switch我使用toggle_button_color.xml分别将switch打开和closures时,将拇指颜色更改为绿色和红色。

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@color/red" /> <item android:state_checked="true" android:drawable="@color/green" /> </selector> 

如果我把这个switch添加到一个活动布局,然后完全按照下面的图片进行操作。 在这里输入图像说明在这里输入图像说明

但是,如果我使用m_dialog.setContentView(R.layout.mylayout);Dialog添加此switch m_dialog.setContentView(R.layout.mylayout); 然后开关看起来像下面。 请注意,这里mylayout.xml是一个layout文件,我在其中添加了switch

在这里输入图像说明

对于5.0以下的Android版本棒棒糖switch工作正常,因为我想要的。 请注意,由于某些原因,我在我的应用程序中使用Theme.Holo.Light ,所以我不能使用SwitchCompat

我知道有一个类似的问题在这里被问到在Android 5.0上点击时切换崩溃 。

这里也报告了https://code.google.com/p/android-developer-preview/issues/detail?id=1704 。 我也尝试了在上面的链接中提到的工作来添加可绘制的图像的拇指和跟踪,但我不明白为什么同样的开关工作的activity layout而不是Dialog

有谁能帮我解决这个问题吗?

Solutions Collecting From Web of "Android版本5.0中的开关控件在Dialog中不起作用"

谢谢大家的回应,但是我自己解决了。 早些时候,我正在使用Dialog类实现Dialog ,这导致了问题。

 Dialog mDialog= new Dialog(getActivity(),android.R.style.Theme_Dialog); mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); mDialog.setContentView(R.layout.mylayout); 

我甚至试图改变themes但没有帮助。

然后我尝试使用DialogFragment ,它解决了这个问题。

 public class MyDialog extends DialogFragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); View v = inflater.inflate(R.layout.mylayout, container, false); return v; } } 

而从我的Activity类我调用这个Dialog如下。

 MyDialog mDialog = new MyDialog(); mDialog .show(getFragmentManager(), "Hello"); 

我不能确定没有看到你的Dialog实例化代码(如果可以,请添加),但是听起来好像Activity使用的主题和用于Dialog的主题之间存在差异。 您可能想要使用public Dialog (Context context, int theme) 构造函数明确指定DialogTheme