Android友盟一键登录按钮上方显示View

1、设计效果
设计效果
2、实现方式

1、使用动态XML布局的方式设计整体布局

/**
     * 动态添加控件
     *
     * @param authRegisterXmlConfig 自定义布局,可以设置控件的位置和相关处理逻辑
     */
public void addAuthRegisterXmlConfig(UMAuthRegisterXmlConfig authRegisterXmlConfig)

初始化UMAuthRegisterXmlConfig类时需要先调静态内部类Builder()里面的setLayout()方法,传入layoutUMAbstractPnsViewDelegate类回调,接着调用Builder获得UMAuthRegisterXmlConfig对象。

2、在UMAbstractPnsViewDelegate类的onViewCreated(View view){...}的回调中添加如下代码:

view.postDelayed({
    loginView = (view.parent as ViewGroup).findViewById(com.mobile.auth.R.id.authsdk_login_view)
    val vp = loginView?.parent
    if (vp is RelativeLayout) {
        val loginWelfare =
            view.findViewById<TextView>(R.id.tv_login_welfare_tips)
        if (view is ViewGroup) view.removeView(loginWelfare)
        vp.addView(loginWelfare)
        val lp = loginWelfare.layoutParams
        if (lp is RelativeLayout.LayoutParams) {
            lp.width = ViewGroup.LayoutParams.WRAP_CONTENT
            lp.height = ViewGroup.LayoutParams.WRAP_CONTENT
            lp.addRule(
                RelativeLayout.ALIGN_END,
                loginView?.id!!
            )
            lp.addRule(
                RelativeLayout.ALIGN_BOTTOM,
                loginView?.id!!
            )
            lp.rightMargin = 0
            lp.bottomMargin = 42.idp()
            lp.topMargin = 0
            loginWelfare.layoutParams = lp
        }
    }
}, 500)

其中
R.id.authsdk_login_view 是友盟“一键登录按钮”的ID
R.id.tv_login_welfare_tips 是自定义View中需要显示在“一键登录按钮”上面的View ID

实现过程大致是先移除再添加----先从自定义layout中移除(因为自定义View在一键登录按钮的底部,需要移除, 也可以LayoutInflater.from(view.context).inflate()获取这个View)然后添加到“一键登录按钮”同一个ViewGroup中(会在顶部),这样就实现了在“一键登录按钮”上方显示View的目的。

如果本文对你有帮助就点个赞支持下吧~~~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。