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.xmlswitch

<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.xmlたファイルであることに注意してください。layoutswitch

ここに画像の説明を入力

5.0未満のAndroidバージョンでは、ロリポップswitchは正常に動作しています。何らかの理由Theme.Holo.Lightで、アプリケーションで を使用しているため、 を使用できないことに注意してくださいSwitchCompat

同様の質問がここで尋ねられたことを知っています Android 5.0 をクリックすると、スイッチがクラッシュします

また、ここで報告されています https://code.google.com/p/android-developer-preview/issues/detail?id=1704activity 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間に矛盾があるようです。コンストラクタを使用してを明示的に指定して試してみることをお勧めします。ThemeActivityDialogDialogThemepublic Dialog (Context context, int theme)

于 2015-05-02T04:46:48.307 に答える