在res/values/ali_sdk_openaccount_styles.xml里定义了可以直接覆盖的所有样式,开发者可以继承对应的style然后将AndroidManifest.xml中activity的配置改成自己的样式。
属性名 | 解释 |
ali_sdk_openaccount_attrs_title_bar_bg | 标题栏背景 |
ali_sdk_openaccount_attrs_title_bar_text_color | 标题栏文字颜色 |
ali_sdk_openaccount_attrs_title_bar_back_text_color | 标题栏回退按钮颜色 |
ali_sdk_openaccount_attrs_title_bar_visibility | 标题栏是否可见visible或invisible |
ali_sdk_openaccount_attrs_main_bg | activity主背景颜色 |
ali_sdk_openaccount_attrs_next_step_bg | 下一步按钮背景 |
ali_sdk_openaccount_attrs_input_box_clear_btn_color | 清除按钮颜色 |
ali_sdk_openaccount_attrs_send_sms_code_color | 发送短信验证码按钮上的文字颜色 |
ali_sdk_openaccount_attrs_login_register_text_color | 登录Activity上注册文字颜色 |
ali_sdk_openaccount_attrs_login_reset_password_text_color | 登录Activity上忘记密码文字颜色 |
ali_sdk_openaccount_attrs_login_other_plateform_login_text_color | 登录Activity上其他账号登录文字颜色 |
ali_sdk_openaccount_attrs_title_bar_title | 标题栏标题文字 |
ali_sdk_openaccount_attrs_login_oauth_plateform | 第三方登录平台选择taobao|qq|weibo|weixin |
ali_sdk_openaccount_attrs_login_oauth_text_text_color | 第三方登录按钮下边的文字颜色 |
ali_sdk_openaccount_attrs_login_oauth_text_color | 第三方登录按钮上的文字颜色 |
ali_sdk_openaccount_attrs_login_oauth_1_bg | 第三方登录淘宝的背景 |
ali_sdk_openaccount_attrs_login_oauth_2_bg | 第三方登录微信的背景 |
ali_sdk_openaccount_attrs_login_oauth_3_bg | 第三方登录微博的背景 |
ali_sdk_openaccount_attrs_login_oauth_4_bg | 第三方登录qq的背景 |
ali_sdk_openaccount_attrs_fill_password_text_color | 输入密码框下边的解释文案的文字颜色 |
1 将SDK的AndroidManifest.xml中的activity配置剪切到ISV APP的工程中的AndroidManifest.xml中
2 在ISV APP工程中的styles.xml中配置一个新的style如:
<style name="NewLogin" parent="@style/Login">
// 修改需要修改的item
<item name="ali_sdk_openaccount_attrs_main_bg">#817936</item>
</style>
3 将ISV APP的工程中的AndroidManifest中的activity的主题配置修改
<activity android:configChanges="orientation|screenSize|keyboardHidden" android:name="com.alibaba.sdk.android.openaccount.ui.ui.LoginActivity" android:theme="@style/NewLogin"/>
可以复制一份布局文件,不要更改已有的控件id,可以新增控件,然后通过LayoutMapping类让控件或Activity加载自己定义的layout布局
com.alibaba.sdk.android.openaccount.ui.LayoutMapping.put(控件(或activity).class,R.layout.xxx);
当然也可以通过改变加载布局的方式来调整对应控件的属性值
可以进行布局调整的类列表
类路径 | layout文件 | 解释 |
com.alibaba.sdk.android.openaccount.ui.CheckCodeInputBox | ali_sdk_openaccount_check_code_input_box.xml | 验证码输入框 |
com.alibaba.sdk.android.openaccount.ui.widget.InputBoxWithClear | ali_sdk_openaccount_input_box.xml | 带有清除按钮的输入框 |
com.alibaba.sdk.android.openaccount.ui.widget.InputBoxWithHistory | ali_sdk_openaccount_input_box_with_history.xml | 登录页上带有下拉历史选择框的输入框 |
com.alibaba.sdk.android.openaccount.ui.widget.NextStepButton | ali_sdk_openaccount_next_step.xml | 下一步按钮 |
com.alibaba.sdk.android.openaccount.ui.widget.OauthWidget | ali_sdk_openaccount_oauth.xml | 登录页的第三方登录 |
com.alibaba.sdk.android.openaccount.ui.widget.PasswordInputBox | ali_sdk_openaccount_password_input_box.xml | 密码输入框 |
com.alibaba.sdk.android.openaccount.ui.widget.SmsCodeInputBox | ali_sdk_openaccount_sms_code_input_box.xml | 短信验证码输入框 |
com.alibaba.sdk.android.openaccount.ui.widget.TitleBar | ali_sdk_openaccount_title_bar.xml | 标题栏 |
com.alibaba.sdk.android.openaccount.ui.ui.LoginActivity | ali_sdk_openaccount_login.xml | 账号密码登录 |
com.alibaba.sdk.android.openaccount.ui.ui.NoPasswordLoginActivity | ali_sdk_openaccount_no_password_login.xml | 验证码登录 |
com.alibaba.sdk.android.openaccount.ui.ui.RegisterActivity | ali_sdk_openaccount_register.xml | 注册 |
com.alibaba.sdk.android.openaccount.ui.ui.ResetPasswordActivity | ali_sdk_openaccount_reset_password.xml | 找密 |
com.alibaba.sdk.android.openaccount.ui.ui.RegisterFillPasswordActivity | ali_sdk_openaccount_register_fill_password.xml | 注册填写密码 |
com.alibaba.sdk.android.openaccount.ui.ui.RestPasswordFillPasswordActivity | ali_sdk_openaccount_reset_password_fill_password.xml | 找密填写密码 |
如果需要增加Button等控件并注册事件以及拿到Activity的实例,可以通过自定义一个layout实现,具体过程如下:
1 继承Layout类
public class MyButton extends LinearLayout { private Button button; public MyButton(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.my_button, this, true); button = (Button) findViewById(R.id.button); Activity activity = (Activity) context; } }
对应的layout xml为my_button.xml
<?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:textColor="#61666F" android:textSize="18sp" /> </merge>
2 修改layout.xml
复制ali_sdk_openaccount_login.xml为ali_sdk_openaccount_login_bak.xml
需要加入的地方配置此控件,如在ali_sdk_openaccount_login_bak.xml中加入
<com.alibaba.sdk.android.demo.MyButton android:layout_width="wrap_content" android:layout_height="wrap_content" />
在打开登录界面前调用LayoutMapping.put(LoginActivity.class, R.layout.ali_sdk_openaccount_login_bak);
3 效果
如果开发者想继承对应的Activity,可以通过接口指定要启动的activty的class
void showLogin(final Context context, Class<?> targetActivityClass, final LoginCallback loginCallback) 注意配置自定义activity的时候需要配置style,如: android:theme="@style/Login" 登录、注册、找密等都可以使用此方式
群号:1364864169