Подтвердить что ты не робот

Android google signin и кнопка входа в facebook выглядят совершенно иначе

Объект Facebook LoginButton по умолчанию и объект кнопки входа в систему Google имеют совершенно разные представления, и они не соответствуют моему существующему макету вместе. Насколько я знаю, эти объекты не являются активами, которые я могу изменить без изменения самой библиотеки (где я бы предположил, что эти компоненты также являются с открытым исходным кодом)

Как люди справляются с этим? Я видел приложения, у которых есть параметры входа для тех, которые используют свои собственные пользовательские кнопки, но в моей реализации я использую те данные объекты, которые автоматически вызывают их соответствующие библиотеки при нажатии.

Я могу, конечно, погрузиться глубже, но мне кажется, что я изобретаю не столь очевидное колесо, если я это сделал

 <com.google.android.gms.common.SignInButton
                android:id="@+id/sign_in_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center" />

Этот объект не так явно является кнопкой, и я еще не проверял, действительно ли это кнопка.

Мне нужно использовать разные активы для входа в Google+ и Facebook.

Что у меня

QJK7bP3.png

Пример андроида, который мне нравится (приложение Duolingo)

6525cSA.png

изменить: после некоторых очень простых настроек макета, это результат (в ландшафтном режиме, чтобы осветить проблему)

5sthw5U.png

эти кнопки все еще очень разные, и мне нужен другой актив, который все равно будет обращаться к правильным методам. Я как-то понимаю, как это сделать с помощью Facebook, благодаря примерам, но вход в Google довольно загадочен для меня прямо сейчас

4b9b3361

Ответ 1

Чтобы изменить текст на кнопке Facebook, используйте:

fb:login_text="Put your login text here"
fb:logout_text="Put your logout text here"

Вам также необходимо добавить это к кнопке:

xmlns:fb="http://schemas.android.com/apk/res-auto"

так:

<com.facebook.widget.LoginButton
        xmlns:fb="http://schemas.android.com/apk/res-auto"
        android:id="@+id/login_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="0dp"
        fb:login_text="Sign in with Facebook"
        />

Ответ 2

Попробуйте следующее: Добавьте этот метод в свою деятельность:

protected void setGooglePlusButtonText(SignInButton signInButton, String buttonText) {
        for (int i = 0; i < signInButton.getChildCount(); i++) {
            View v = signInButton.getChildAt(i);

            if (v instanceof TextView) {
                TextView tv = (TextView) v;
                tv.setTextSize(15);
                tv.setTypeface(null, Typeface.NORMAL);
                tv.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
                tv.setText(buttonText);
                return;
            }
        }
    }

Добавьте следующую строку в onCreateMethod (где вы инициализируете id):

setGooglePlusButtonText(btnSignIn, getString(R.string.common_signin_button_text_long));

Ответ 3

Кнопки не оформлены точно так же - различная кривая по углам и использование теней отбрасывания. Поэтому невозможно сделать их одинаковыми. Самое близкое, что я мог получить, это сделать вертикальную линейную компоновку с точной шириной 215dip - и установить ширину кнопок для match_parent:

enter image description here

Это использовало следующий layout.xml:

<LinearLayout
    android:layout_width="215dip"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:orientation="vertical" >

<com.google.android.gms.common.SignInButton
    android:id="@+id/sign_in_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<com.facebook.widget.LoginButton
    android:id="@+id/authButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

С помощью кнопки Google+ вы можете просто использовать свой собственный актив - com.google.android.gms.common.SignInButton ведет себя так же, как android.widget.Button, и вы регистрируете обработчик onClick обычным способом. Обязательно следуйте рекомендациям по брендингу Google при создании своего актива:

https://developers.google.com/+/branding-guidelines

Обратите внимание, что кнопка Google+ предоставляет переводы, которые вам нужно создать самостоятельно, если вы реализуете собственную кнопку на нескольких языках.

Ответ 4

С последним sdk обе кнопки выглядят одинаково. Код и результаты приведены ниже.

Шаг 1: build.gradle

compile 'com.facebook.android:facebook-android-sdk:4.6.0'

compile 'com.google.android.gms: play-services: 7.5.0'

Шаг 2: myActivity.xml

<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"/>

Шаг 3: Результат введите описание изображения здесь Шаг 4: Обновлено build.gradle с последним gcm

compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile 'com.google.android.gms:play-services:8.4.0'

Шаг 5: Результат

введите описание изображения здесь