次のようにAndroidデフォルトのToggleButton
を作成したい:
でもTEXTなしで作りたい
私はこのコードで試しました:
ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);
しかし、それは水平の緑色のバーの上部に空きスペースを残しています。
私はその空のスペースを望んでいません、私は水平の緑色のバーだけが欲しいです。
それを達成する方法は?
ありがとう
上部の空のスペースは、デフォルトのトグルボタンスタイルで使用される2つのNinepatch(_btn_toggle_off.9.png
_および_btn_toggle_on.9.png
_)が原因です。
水平バーを完全に中央に配置するには、オリジナルの2つの新しいninepatch派生フォームを使用するToggleButtonの新しいスタイルを作成する必要があります。
編集:最小限のXMLを必要とするメソッド:
トグルボタン用に2つの9つのパッチを作成し、_my_btn_toggle
__ onと_my_btn_toggle_off
_という名前を付けます。
ドローアブルフォルダに_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)
_
次のように設定するだけです。
<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>
お役に立てば幸いです〜
使用する
<ToggleButton
...
Android:textOff="@null"
Android:textOn="@null"
Android:textSize="0dp" />
テキストが消えるだけでなく、他の方法で表示されるはずの空きスペースも削除されます。
私はそうだと思いました
Android:textColor="@Android:color/transparent"
レイアウトFile.xml
<ToggleButton
Android:id="@+id/toggle"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="8dp"
Android:layout_marginTop="8dp"
Android:layout_marginEnd="8dp"
Android:background="@drawable/check"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
メインアクティビティで.Java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ToggleButton mic = (ToggleButton)findViewById(R.id.toggle);
mic.setTextOff(null);
mic.setTextOn(null);
mic.setText(null);
layout.xmlで使用されるcheck.xml
<?xml version="1.0" encoding="utf-8"?>
<item Android:drawable="@drawable/mic_on"
Android:state_checked="true">
</item>
<!-- When not selected, use white-->
<item Android:drawable="@drawable/mic_off"
Android:state_checked="false">
</item>
これらの行はあなたが探しているものです
mic.setTextOff(null);
mic.setTextOn(null);
mic.setText(null);
最も洗練されたソリューションではありませんが、上部の余分なスペースを非表示にしようとしている場合は、tb.setTextSize(0);
を試すことができます。 textOn/textOffを空の文字列に設定する必要がある場合があります:tb.setTextOn("");
編集:私はより良いオプションはextend
ing Button
によって独自のカスタムボタンを作成し、状態を保持することです(これを参照SO押された/押されていない状態の投稿: Pressed Android button state )そして適切な状態として設定するアセットを見つけます...
このような塗りつぶしスタイルのXML ..魔法はテキストの色を透明にすることです...
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:textOff="blabla"
Android:textOn="blablabla"
Android:textColor="@Android:color/transparent"
Android:background="@drawable/boutmediumrouge"
/>
<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" />
<ToggleButton
Android:id="@+id/tooglebutton"
Android:layout_width="60dp"
Android:layout_height="25dp"
Android:textOff="off"
Android:textOn="on"
Android:textSize="0dp"
/>
CheckBox
の代わりにToggleButton
を使用する方がはるかに手間がかかりません。それらは同じ状態を持っているため、同じ機能を実現しますが、<Android:button="@drawable/...">
属性を定義することで、CheckBox
の外観を簡単に変更できます。