web-dev-qa-db-ja.com

Facebook Android SDK3?

Facebook Android SDKにはcom.facebook.widget.LoginButtonがあります

[ログイン]ボタンに自分の画像を配置したい。出来ますか ?

これまでのところ、Android:src="@drawable/facebook"をボタン要素の属性としてレイアウトファイルに追加しようとしましたが、運がありません

34
Michael

テキストを空の文字列にオーバーライドし、ボタンのsetBackgroundResourceを画像に定義しました(動的なログイン/ログアウトテキスト機能は必要ありませんでした)

<com.facebook.widget.LoginButton
        xmlns:fb="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/login_button"
        Android:layout_width="249dp"
        Android:layout_height="45dp"
        Android:layout_above="@+id/textView1"
        Android:layout_centerHorizontal="true"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginBottom="30dp"
        Android:layout_marginTop="30dp"
        Android:contentDescription="@string/login_desc"
        Android:scaleType="centerInside"
        fb:login_text=""
        fb:logout_text="" />

そして、コードで私はバックグラウンドリソースを定義しました:

final LoginButton button = (LoginButton) findViewById(R.id.login_button);
button.setBackgroundResource(R.drawable.facebook);

回避策のようなものですが、Facebook SDKコードを変更するよりも(これも非常に簡単ですが)好みで、バージョンを更新するたびに更新することを心配しています。

78
Michael

はい、テキストと画像の両方を変更したい場合は、以下のコードを書きます。

authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setBackgroundResource(R.drawable.icon);
authButton.setText("Login");
authButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);`
10
Heena M. Patel

別の方法

loginButton = (LoginButton) findViewById(R.id.fb_login_button);
loginButton.setVisibility(View.GONE);




ImageView ivFbCustomButton = (ImageView) findViewById(R.id.iv_fb_custom_button);
ivFbCustomButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        com.facebook.login.widget.LoginButton btn = new com.facebook.login.widget.LoginButton(FacebookActivity.this);
        btn.performClick();
    }
});

注:

XMLファイルの2つのボタンのコードを記述する必要があります。 1つは、デフォルトのFacebookボタン用です(最初のステップでは非表示にしています)。 2番目はカスタムボタン用です

2
Bahu