4

Buttonイベントの一部がトリガーされたときに、Libgdx の外観を変更できるようにする必要があります。

これが私のボタンの宣言です:

Button googleButton = new Button(skin.getDrawable("google_sign_in"));

私が試したことは次のとおりです。

googleButton.setBackground(skin.getDrawable("google_sign_out"));
googleButton.invalidate();

googleButton.setChecked(true);
googleButton.invalidate();

googleButton.getStyle().up = skin.getDrawable("google_sign_out");
googleButton.invalidate();

私は多くの検索を行いましたが、答えが見つかりません。誰かがこれを行う正しい方法を教えてもらえますか?

4

5 に答える 5

6

問題は、を初期化した後にスキン/スタイルの内容を変更していることだと思いますButtonが、ボタンオブジェクトは初期化後にスタイルを参照しません。また、あなたが何をしようとしているのかについても完全には明らかではありません。ユーザーがサインインするまで「サインイン」ボタンを表示し、そのボタンを「サインアウト」ボタンにしたいと思います。

このinvalidateメソッドは、再レイアウトをトリガーするだけです (のサイズ/位置を再計算するためActor)。

次のように、 でスタイルを強制してみてくださいsetStyle

   googleButton.getStyle().up = ... whatever;
   googleButton.setStyle(googleButton.getStyle());

Buttonそうは言っても、2 つ (?) の異なるオブジェクト (1 つはログイン用、もう 1 つはログアウト用) を用意したほうがよいと思います。それらをStackにパックし、どちらかを非表示にします (「 」を参照Actor.setVisible) 。

于 2013-06-29T06:16:33.460 に答える
0

グーグルでこれを検索している人のためだけに。ボタンのスタイルを、スキン ファイルに既に追加されているスタイルから変更するには、既に初期化した後:

btn.setStyle(skin.get("YOUR BTN STYLE",TextButton.TextButtonStyle.class));
于 2017-02-18T15:19:52.817 に答える