gpt4 book ai didi

Android:如何组织具有不同信息的多个屏幕?

转载 作者:行者123 更新时间:2023-11-30 03:43:44 27 4
gpt4 key购买 nike

我的应用程序中有多个用户角色。除了一些小的变化外,它们的一些屏幕应该几乎相似。有没有办法为所有用户创建一个布局,然后在运行时(用户登录后)更改一些 UI 元素,或者我应该为每个用户角色创建新布局?什么是最好的方法?

最佳答案

如果更改确实很小,只需对所有更改使用相同的布局,然后根据用户角色隐藏或删除 onCreate() 调用中不需要的 UI 元素,例如示例:

public enum Roles { USER, ADMIN, SUPER };

private Roles myRole = Roles.USER;

@Override
protected void onCreate( Bundle data ) {
super.onCreate( data );
setContentView( R.layout.this_activity );
myRole = getUserRole(); // This could inspect the Bundle or a singleton
switch( myRole ) {
case Roles.USER:
findViewById( R.id.control1 ).setVisibility( View.GONE ); // This hides a control and the hidden control won't take up any space.
findViewById( R.id.control2 ).setVisibility( View.INVISIBLE ); // This hides a control but leaves an empty space on the screen.
findViewById( R.id.control3 ).setVisibility( View.VISIBILE );
break;
case Roles.ADMIN:
findViewById( R.id.control4 ).setVisibility( View.GONE );
findViewById( R.id.control5 ).setVisibility( View.INVISIBLE );
findViewById( R.id.control6 ).setVisibility( View.VISIBILE );
break;
}
}

请注意,您可以使用上述技术使整个布局消失,因此如果您有一些 super 管理按钮,请将它们放在 LinearLayout 中,为布局指定一个 id,然后简单地隐藏整个位与上述技术。

如果变化比较大,您可能需要考虑使用 Fragments 将关联的小部件绑定(bind)在一起,然后将 Fragments 添加到适用于用户角色的布局中。

一般来说,我建议不要使用内容几乎相同的多个 Activity 。

关于Android:如何组织具有不同信息的多个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com