8

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

<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到活动布局中,然后它的工作将完美无缺,如下图所示。 在此处输入图像描述 在此处输入图像描述

但是,如果我switchDialog使用时添加它,m_dialog.setContentView(R.layout.mylayout);则开关如下所示。请注意,这mylayout.xmllayout我在其中添加的文件switch

在此处输入图像描述

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

我知道在点击 Android 5.0 时 Switch crashs已在此处提出了类似的问题。

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

有人可以帮我解决这个问题吗?

4

2 回答 2

1

谢谢大家的回复,但我自己解决了。早些时候,我正在使用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");
于 2015-05-05T04:45:28.600 回答
0

如果没有看到您的实例化代码,我无法确定Dialog(如果可以,请添加),但听起来Theme您使用Activity的主题与您的Dialog. 您可能想尝试使用构造函数Dialog显式指定's 。Themepublic Dialog (Context context, int theme)

于 2015-05-02T04:46:48.307 回答