有没有办法在 Android 中没有按钮的情况下使用 Twitter Digits?

Is there a way to use Twitter Digits without the button in Android?

我正在制作一个使用推特数字的应用程序,我想知道是否有一种方法可以在不使用丑陋的推特数字按钮的情况下使用它,上面写着“使用我的 phone 号码

您必须以编程方式修改按钮,使用 xml 将不起作用。例如:

digitsButton.setText("Your text here");
digitsButton.setBackgroundColor(getResources().getColor(R.color.primary));

您可以使用自己的按钮,只需调用 Digits.authenticate()

final AuthCallback digitsCallback = new AuthCallback() {
    @Override
    public void success(DigitsSession session, String phoneNumber) {
        // Do something on success
    }

    @Override
    public void failure(DigitsException exception) {
        // Do something on failure
    }
};

findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Digits.authenticate(digitsCallback);
    }
});

现在你甚至得到了答案。但以防万一,自定义 DigitsAuth 按钮的最简单方法如下:

  1. 创建一个新的背景图片并将其命名为 dgts__digits_btn.png ==> 这将替换 digiAuth 按钮的背景图片。
  2. 通过在 dimens.xml
  3. 中添加 tw__login_btn_drawable_padding 属性来更改 DigitsAuthButton 按钮周围的填充
  4. 通过在 strings.xml
  5. 中添加名称为 "dgts__login_digits_text" 的字符串条目来更改默认的 DigitsAuthButton 按钮文本
  6. 通过在 dimens.xml
  7. 中添加 "tw__login_btn_text_size" 来更改文字大小
  8. DigitsAuthButton 通过添加 "tw__login_btn_right_padding" 和 dimens.xml
  9. 来填充按钮

希望对您有所帮助。

使用 Android 数据绑定库

XML 文件

<layout xmlns:android="http://schemas.android.com/apk/res/android" >

    <data>

        <variable
            name="viewModel"
            type="package.DigitsViewModel" />
    </data>

    ...
    <com.digits.sdk.android.DigitsAuthButton
        ...
        android:text="@{viewModel.mDigitsButtonText}"
        android:background="@{viewModel.mDigitsButtonDrawable}" />

</layout>

DigitsViewModel 文件

public final ObservableField<String> mDigitsButtonText = new ObservableField<>();
public final ObservableField<Drawable> mDigitsButtonDrawable = new ObservableField<>();

mDigitsButtonText.set("Your text here");
mDigitsButtonDrawable.set(ContextCompat.getDrawable(mContext, R.drawable.some_drawable));

尝试使用自定义按钮的 OnClickListener:

AuthConfig.Builder builder = new AuthConfig.Builder();

builder.withAuthCallBack(new AuthCallback() {
    @Override
    public void success(DigitsSession session, String phoneNumber) {
        Toast.makeText(getApplicationContext(), "Authentication successful for "
            + phoneNumber, Toast.LENGTH_LONG).show();

            // Do something
         }

     @Override
     public void failure(DigitsException error) {
         // Do something
     }
});

AuthConfig authConfig = builder.build();

Digits.authenticate(authConfig);