web-dev-qa-db-ja.com

Android 4.0スタイルのトグルボタンを使用

私がやろうとしていること


レイアウトでAndroid 4.0スタイルのトグルボタンを使用しようとしています。このために、テーマ= Theme.Holo.Lightを選択しました。そこからトグルボタンを取得すると、緑色の正方形が表示されます。ボタンが有効になっている場合は行。

しかし、上部の構成にあるようにトグルボタンを使用したいと思います(プリントスクリーンを見てください)。

質問


Thiseトグルボタンを使用するにはどうすればよいですか?いくつかのコードスニペットまたは簡単なチュートリアルがあれば素晴らしいでしょう!

宜しくお願いします

サファリ

写真


screenshot of the togglebuttons

14
safari

新しい編集:スイッチをAPIレベル8に完全にバックポートし、githubに配置しました: https://github.com/ankri/SwitchCompatLibrary


Switchのカスタム実装に関する古い投稿:

パーティーに少し遅れましたが、同じ問題がありました。私はこのスレッドの他の投稿からソースコードを取得し、独自のバージョンのスイッチを作成しました。

ソースコードとドキュメントを見つけることができます 私のウェブサイトで

これはどのように見えるかです:

SwitchButtonDemo screenshot

編集:更新されたリンクと画像

24
ankri.de

更新:新しい画像は明るい背景と暗い背景の両方で機能します。元の画像はまだ利用可能です。

また、コメントで指摘されているように、必ず「* .9.png」、つまり「switch_on_on_db.9.png」などで保存してください。


アンクリの答えは素晴らしいですが、少し重いです。また、彼は古い(そして私の意見ではよりきれいな)4.1スタイルのボタンとは対照的に4.2スタイルのスイッチを使用しています。簡単に修正できるように、トグルボタンをスイッチのようにスタイル設定できるようにドローアブルを作成しました。

まず、ボタンのスタイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/switch_on_on_db" Android:state_checked="true" Android:state_pressed="true"/>
<item Android:drawable="@drawable/switch_on_on_db" Android:state_checked="true" Android:state_focused="false"/>
<item Android:drawable="@drawable/switch_off_off_db" Android:state_checked="false" Android:state_pressed="true"/>
<item Android:drawable="@drawable/switch_off_off_db" Android:state_checked="false" Android:state_focused="false"/>
</selector>

これらの画像を参照します:

enter image description hereenter image description here

ここから元の画像をダウンロードします。

オールドオフ

オールドオン

最後に、次のようにトグルボタンのスタイルを設定できます。

<ToggleButton 
    Android:id="@+id/ParamToggleButton"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/toggletoswitch"
    Android:textOff=""
    Android:textOn=""/>

更新:

ジェリービーンズバージョン(同一ではありませんが)が利用可能になりました:

enter image description hereenter image description here

オールドオフ

オールドオン

21
dberm22

アプリがAPIレベル14以上をターゲットにしている場合。 Switch ウィジェットを使用して、アプリケーションのテーマが「Theme.Holo」または「Theme.Holo.Light」であることを確認してください

ただし、2.3未満のAPIレベルをターゲットにする場合は、カスタムレイアウトを作成する必要があります。それについて説明するのはかなり面倒だと思います。例を挙げましょう。

「切り替え」ボタンの実際の実装は ここ にあります。

そうですね、そのソースを取得してプロジェクトに入れることができます。エラーが発生しますが、解決するのはそれほど難しくありません。

6
chitacan

上記の素晴らしい解決策...ありがとう! (名前が指定されていませんか?)誰かが私のために働いた私のxmlを使用して、トグルボタンをスイッチのように見せることができるかもしれないと思いました:

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:gravity="right|center_vertical"
            Android:orientation="horizontal" >

            <TextView
                Android:id="@+id/tv_switchToggle"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginRight="10dip"
                Android:layout_marginTop="0dip"
                Android:text="@string/shake_to_add"
                Android:textAppearance="?android:attr/textAppearanceMedium"
                Android:textColor="#ffffff" />

            <ToggleButton
                Android:id="@+id/switchToggle"
                Android:layout_width="75dp"
                Android:layout_height="20dp"
                Android:layout_margin="5dip"
                Android:background="@drawable/togglebutton"
                Android:textOff=""
                Android:textOn="" />
       </LinearLayout>

@ drawable/tokenbuttonは、上記のセレクターを参照します。再度、感謝します!

2
kwishnu