ボタンは自動的に自己確認します。特別なことを行う必要はなく、チェックされた状態はいつでも.isChecked
で取得できます。デフォルトではボタンのチェックが外されていますが、ボタンを作成したときにそのボタンをsetChecked(true)
で変更することができます。
チェック状態に応じてボタンの外観を変更したい場合は、ドロアブルを追加するだけです。内部的にはIf no checked state image just use default image
のようになります。
ボタンのタイプについては、画像ボタンだけでも問題はありませんが、どのボタンでも変更可能な外観のボタンを作成できます。 ImageButton
では、ボタンの背景にイメージを追加することができます。これらは3種類のボタンのスタイルです:
TextButton.TextButtonStyle textButtonStyle =
new TextButton.TextButtonStyle(
Drawable up, //Background for up state
Drawable down, //background for down state
Drawable checked, //background for checked == true
BitmapFont font); //font
ImageButton.ImageButtonStyle imageButtonStyle =
new ImageButton.ImageButtonStyle(
Drawable up,
Drawable down,
Drawable checked,
Drawable imageUp, //Image for up state
Drawable imageDown, //Image for down state
Drawable imageChecked, //Image for checked == true
BitmapFont font);
//Never actually used this one, you made me aware of it's excistance. I think this is a redundant class.
ImageTextButton.ImageTextButtonStyle imageTextButtonStyle =
new ImageTextButton.ImageTextButtonStyle(
Drawable up,
Drawable down,
Drawable checked,
BitmapFont font);
したがって、チェックされたドロウアブルを設定してボタンをクリックするだけです。
これらはスキンファイルでも設定できます。適切な描画可能な名前をjson
から呼び出します。これは、テキストボタンを使用して単純なトグルボタンを作成する方法です。
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle:
{
default: { up: my_up_button, checked: my_checked_button, font: default-font, fontColor: white }
}
テキストを上に置かない場合は、空の文字列を渡します。代わりに、クリックのテキストを変更することもできます。
final TextButton button = new TextButton("Ewwww! Touch me!", skin);
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
super.clicked(event, x, y);
if (button.isChecked())
{
button.setText("Now I am unchecked!");
}
else
{
button.setText("Now I am checked!");
}
}
});
あなたが投稿したコードは、ソースのいくつかの異なる場所から切り取って貼り付けられたように見えます。何が間違っているかは言わなかったので、助けてくれるものはあまりありません。とにかく、ImageTextButtonの代わりにCheckBoxを使用したいと思います。次に、2つのマイク画像を1つのスタイルに入れて、自動的に切り替えることができます。 – Tenfour04