我一直在尝试使用普通的按钮来执行带有twitter sdk的身份验证过程,但是它似乎不起作用。有人尝试过类似的东西吗?
代码
buttonTwitterLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Twitter.logIn(LoginActivity1.this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> twitterSessionResult) {
Log.i(TAG, "success");
Log.i(TAG, twitterSessionResult.toString());
}
@Override
public void failure(TwitterException e) {
Log.e(TAG, "failed");
}
});
}
});
最佳答案
来自Twitter开发人员关系团队的Luis。 Fabric将在将来支持主题,同时您可以通过创建继承自TwitterLoginButton
的自定义 View 来自定义按钮。
炮弹示例应用程序实现了一个自定义按钮:
public class CannonballTwitterLoginButton extends TwitterLoginButton {
public CannonballTwitterLoginButton(Context context) {
super(context);
init();
}
public CannonballTwitterLoginButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CannonballTwitterLoginButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
if (isInEditMode()){
return;
}
setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable
.ic_signin_twitter), null, null, null);
setBackgroundResource(R.drawable.sign_up_button);
setTextSize(20);
setPadding(30, 0, 10, 0);
setTextColor(getResources().getColor(R.color.tw__blue_default));
setTypeface(App.getInstance().getTypeface());
}
}
https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/view/CannonballTwitterLoginButton.java
布局文件:
<io.fabric.samples.cannonball.view.CannonballTwitterLoginButton
android:id="@+id/twitter_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/sign_up_button"
android:layout_marginTop="@dimen/login_button_margin_top"
android:layout_marginBottom="@dimen/login_button_margin_bottom"
android:layout_marginLeft="@dimen/login_button_margin_start"
android:layout_marginStart="@dimen/login_button_margin_start"
android:layout_marginRight="@dimen/login_button_margin_end"
android:layout_marginEnd="@dimen/login_button_margin_end"
android:text="@string/sign_in_with_twitter"
android:textColor="@color/grayish_blue"
android:textSize="@dimen/login_button_text_size"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/res/layout/activity_login.xml
回调设置:
private void setUpTwitterButton() {
twitterButton = (TwitterLoginButton) findViewById(R.id.twitter_button);
twitterButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
SessionRecorder.recordSessionActive("Login: twitter account active", result.data);
startThemeChooser();
}
@Override
public void failure(TwitterException exception) {
Toast.makeText(getApplicationContext(),
getResources().getString(R.string.toast_twitter_signin_fail),
Toast.LENGTH_SHORT).show();
Crashlytics.logException(exception);
}
});
}
https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/activity/LoginActivity.java
我强烈建议您克隆代码并对其进行研究。
关于android - 在Twitter Fabric中使用自定义登录按钮吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27267809/