20

私はToggleButtonこのようなAndroidのデフォルトを作成したい:ここに画像の説明を入力

しかし、TEXTなしで作成したい

私はこのコードで試しました:

ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);

しかし、水平の緑色のバーの上部に空きスペースが残っています。

その空のスペースは必要ありません。水平の緑色のバーだけが必要です。

それを達成する方法は?

ありがとう

4

10 に答える 10

27

上部の空のスペースは、デフォルトの toggleButton スタイルで使用される2 つの Ninepatch (btn_toggle_off.9.pngおよび) が原因です。btn_toggle_on.9.png

水平バーを完全に中央に配置するには、オリジナルから派生した 2 つの新しい ninepatch を使用する ToggleButton の新しいスタイルを作成する必要があります。

編集:最小限のXMLを必要とする方法:

  • トグルボタン用に 2 つの ninepatches を作成し、名前を付けます: my_btn_toggle_on およびmy_btn_toggle_off

  • drawable フォルダーに、以下を作成しますmy_btn_toggle.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="false" android:drawable="@drawable/my_btn_toggle_off" />
        <item android:state_checked="true" android:drawable="@drawable/my_btn_toggle_on" />
    </selector>
    
  • コードに次を追加しますtb.setBackgroundResource(R.drawable.my_btn_toggle)

    ToggleButton tb = new ToggleButton(map);
    tb.setText(null);
    tb.setTextOn(null);
    tb.setTextOff(null);
    tb.setBackgroundResource(R.drawable.my_btn_toggle)
    
于 2012-07-22T23:33:55.863 に答える
20

次のように設定するだけです。

<ToggleButton android:id="@+id/tbtn1" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@drawable/bg_check"
 android:textOn="" 
 android:textOff="" 
 android:text="" />

そして、必要に応じて、スタイルxml...

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_checked="true" 
android:drawable="@drawable/bg_check_on" /> <!-- pressed -->

  <item android:drawable="@drawable/bg_check_off" /> <!-- default/unchecked -->
</selector>

お役に立てば幸いです〜

于 2012-11-12T06:32:46.837 に答える
12

使用する

<ToggleButton
    ...
    android:textOff="@null"
    android:textOn="@null"
    android:textSize="0dp" />

テキストが消えるだけでなく、そうでなければ表示される空のスペースも取り除きます。

于 2015-04-30T15:52:39.687 に答える
1

I thought so

android:textColor="@android:color/transparent"
于 2015-02-25T21:35:03.407 に答える
0

最もエレガントな解決策ではありませんが、tb.setTextSize(0);上部の余分なスペースを隠そうとしているだけの場合は試すことができます。textOn/textOffを空の文字列に設定する必要がある場合があります。tb.setTextOn("");

編集:私はより良いオプションは、extendingによって独自のカスタムボタンを作成Buttonし、状態を保持し(押された/押されていない状態についてはこのSOの投稿を参照してください:押されたAndroidボタンの状態)、適切な状態として設定するアセットを見つけることです...

于 2012-07-22T22:47:30.317 に答える
0
 <ToggleButton
                android:id="@+id/setting_tb"
                style="@style/style_setting_tb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:checked="true"
                android:gravity="center"
                android:minHeight="0dp"
                android:minWidth="0dp"
                android:textColor="@color/White"
                android:textOff=""
                android:textOn=""
                android:textSize="14sp" />
于 2014-11-11T13:59:26.453 に答える