Facebook SDK v4 LoginButton忽略XML自定义

魔鬼

最近发布的新的Android版Facebook SDK(v4.0)我正在使用的自定义LoginButton造成了奇怪的行为下面是在不同SDK版本中如何呈现相同XML的比较。

问题似乎在于,SDK 4.x中的FB图标无法正常拉伸以适应自定义大小的按钮,而在4.0.1版本中,该android:layout_height属性将完全忽略

我的问题是如何使按钮像在SDK 3.x中一样出现在SDK 4.x中?XML和Java解决方案都是可以接受的。

SDK 3.x的XML:

<com.facebook.widget.LoginButton
        android:background="@color/com_facebook_blue"
        android:id="@+id/login_btn_facebook"
        android:layout_width="225dp"
        android:layout_height="50dp"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
        android:onClick="onFacebookLoginClick"
            />

在SDK 3.x上的外观(在运行CM11S的OnePlus One上截图): 与SDK v3.x一起运行时的XML呈现

SDK 4.x的XML(按钮的包已重命名+我不得不稍微改变宽度和字体以匹配g +按钮):

<com.facebook.login.widget.LoginButton
        android:background="@color/com_facebook_blue"
        android:id="@+id/login_btn_facebook"
        android:layout_width="221dp"
        android:layout_height="50dp"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
        android:textSize="7pt"
        android:onClick="onFacebookLoginClick"
            />

在SDK 4.0上的外观(截屏是在未修改的4.4.4上运行的Genymotion Nexus 5上拍摄的): 在此处输入图片说明

在SDK 4.0.1(相同的Genymotion Nexus 5)上的外观: 在此处输入图片说明

附加信息

  1. 4.0-> 4.0.1 SDK更改日志摘录

登录按钮已更新,可以正确测量其大小。

  1. 相关文章:

  2. 为了支持不同的屏幕尺寸,在登录按钮上方,我有一个ViewPagerIndicator和一个ViewPager,其配置为占用所有可用的垂直空间,该空间在放置具有定义高度的元素后仍保留。

魔鬼

通过执行以下步骤,我设法获得了预期的结果:

  1. 打开Facebook SDK 3.x LoginButton代码,然后查看那里的按钮样式:

    this.setBackgroundResource(R.drawable.com_facebook_button_blue);
    this.setCompoundDrawablesWithIntrinsicBounds(
                 R.drawable.com_facebook_inverse_icon, 0, 0, 0);
    this.setCompoundDrawablePadding(getResources().getDimensionPixelSize(
                 R.dimen.com_facebook_loginview_compound_drawable_padding));
    this.setPadding(getResources().getDimensionPixelSize(
                    R.dimen.com_facebook_loginview_padding_left),
                getResources().getDimensionPixelSize(
                    R.dimen.com_facebook_loginview_padding_top),
                getResources().getDimensionPixelSize(
                    R.dimen.com_facebook_loginview_padding_right),
                getResources().getDimensionPixelSize(
                    R.dimen.com_facebook_loginview_padding_bottom));
    
  2. 基于此答案中提出的解决方案,我在onPostCreate()以下过程中更改了按钮参数

    float fbIconScale = 1.45F;
    Drawable drawable = hostActivity.getResources().getDrawable(
                                   com.facebook.R.drawable.com_facebook_button_icon);
    drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*fbIconScale),
                             (int)(drawable.getIntrinsicHeight()*fbIconScale));
    authButton.setCompoundDrawables(drawable, null, null, null); 
    authButton.setCompoundDrawablePadding(hostActivity.getResources().
                      getDimensionPixelSize(R.dimen.fb_margin_override_textpadding));
    authButton.setPadding(
            hostActivity.getResources().getDimensionPixelSize(
                                                      R.dimen.fb_margin_override_lr),
            hostActivity.getResources().getDimensionPixelSize(
                                                     R.dimen.fb_margin_override_top),
            hostActivity.getResources().getDimensionPixelSize(
                                                      R.dimen.fb_margin_override_lr),
            hostActivity.getResources().getDimensionPixelSize(
                                                 R.dimen.fb_margin_override_bottom));
    

    我的自定义尺寸如下:

    <dimen name="fb_margin_override_top">13dp</dimen>
    <dimen name="fb_margin_override_bottom">13dp</dimen>
    <!--The next value changes the margin between the FB icon and the left border:-->
    <dimen name="fb_margin_override_lr">10dp</dimen>
    <!--The next value changes the margin between the FB icon and the login text:-->
    <dimen name="fb_margin_override_textpadding">17dp</dimen>
    

这将产生所需的布局:

所需的布局:D

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Facebook SDK V4

来自分类Dev

Android Facebook SDK v4 LikeView问题

来自分类Dev

迁移到Facebook PHP SDK v4,开放图

来自分类Dev

Facebook应用邀请iOS v4 SDK错误

来自分类Dev

Facebook应用邀请iOS v4 SDK错误

来自分类Dev

迁移到Facebook PHP SDK v4,开放图

来自分类Dev

在Facebook iOS SDK v4上的requestNewReadPermissions等效

来自分类Dev

使用Facebook SDK 4(Android)的自定义按钮

来自分类Dev

Laravel和Facebook SDK V4:获取未找到的Facebook类

来自分类Dev

是否可以通过Facebook PHP SDK V4获得Json或数组格式的Facebook响应?

来自分类Dev

Facebook PHP SDK v4登录PHP致命错误类'Facebook \\ HttpClients \\ FacebookCurlHttpClient'

来自分类Dev

是否可以通过Facebook PHP SDK V4获得Json或数组格式的Facebook响应?

来自分类Dev

来自Facebook-PHP-SDK v4的Graph API v1.0

来自分类Dev

已登录的Facebook PHP SDK v4重定向

来自分类Dev

自动在墙上发布-Facebook Graph API PHP SDK v4

来自分类Dev

无法通过PHP SDK V4获得Facebook评论。错误:(#210)主题必须是页面

来自分类Dev

如何使用Facebook PHP SDK v4访问GraphObject内部的用户语言

来自分类Dev

FACEBOOK SDK v4返回空白电子邮件地址

来自分类Dev

Facebook SDK V4发布故事,并在网络上托管对象

来自分类Dev

Facebook PHP SDK将v4升级到v5和OpenGraph会话

来自分类Dev

Facebook PHP SDK 4

来自分类Dev

Facebook SDK如何快速处理自定义登录?

来自分类Dev

自定义共享,Facebook SDK iOS的登录按钮

来自分类Dev

粉丝页面墙中的Facebook SDK v4和Graph Api 2.x自动发布

来自分类Dev

Facebook使用JS SDK打开图自定义故事和自定义对象

来自分类Dev

登录Facebook SDK 4 Android

来自分类Dev

Facebook Android SDK 3.5中的自定义Facebook登录按钮图像

来自分类Dev

如何使用facebook sdk通过自定义登录按钮登录facebook

来自分类Dev

在stringtemplate v4中实现自定义功能

Related 相关文章

  1. 1

    Facebook SDK V4

  2. 2

    Android Facebook SDK v4 LikeView问题

  3. 3

    迁移到Facebook PHP SDK v4,开放图

  4. 4

    Facebook应用邀请iOS v4 SDK错误

  5. 5

    Facebook应用邀请iOS v4 SDK错误

  6. 6

    迁移到Facebook PHP SDK v4,开放图

  7. 7

    在Facebook iOS SDK v4上的requestNewReadPermissions等效

  8. 8

    使用Facebook SDK 4(Android)的自定义按钮

  9. 9

    Laravel和Facebook SDK V4:获取未找到的Facebook类

  10. 10

    是否可以通过Facebook PHP SDK V4获得Json或数组格式的Facebook响应?

  11. 11

    Facebook PHP SDK v4登录PHP致命错误类'Facebook \\ HttpClients \\ FacebookCurlHttpClient'

  12. 12

    是否可以通过Facebook PHP SDK V4获得Json或数组格式的Facebook响应?

  13. 13

    来自Facebook-PHP-SDK v4的Graph API v1.0

  14. 14

    已登录的Facebook PHP SDK v4重定向

  15. 15

    自动在墙上发布-Facebook Graph API PHP SDK v4

  16. 16

    无法通过PHP SDK V4获得Facebook评论。错误:(#210)主题必须是页面

  17. 17

    如何使用Facebook PHP SDK v4访问GraphObject内部的用户语言

  18. 18

    FACEBOOK SDK v4返回空白电子邮件地址

  19. 19

    Facebook SDK V4发布故事,并在网络上托管对象

  20. 20

    Facebook PHP SDK将v4升级到v5和OpenGraph会话

  21. 21

    Facebook PHP SDK 4

  22. 22

    Facebook SDK如何快速处理自定义登录?

  23. 23

    自定义共享,Facebook SDK iOS的登录按钮

  24. 24

    粉丝页面墙中的Facebook SDK v4和Graph Api 2.x自动发布

  25. 25

    Facebook使用JS SDK打开图自定义故事和自定义对象

  26. 26

    登录Facebook SDK 4 Android

  27. 27

    Facebook Android SDK 3.5中的自定义Facebook登录按钮图像

  28. 28

    如何使用facebook sdk通过自定义登录按钮登录facebook

  29. 29

    在stringtemplate v4中实现自定义功能

热门标签

归档