Android:如何组织几个不同信息的屏幕?

时间:2013-03-10 22:41:02

标签: android user-interface

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

1 个答案:

答案 0 :(得分:1)

如果更改真的很小,只需对所有更改使用相同的布局,然后根据用户角色隐藏或删除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;
    }
}

请注意,您可以使用上述技术使整个布局消失,因此如果您有一些超级管理员按钮,请将它们放在LinearLayout中,为布局指定一个ID,然后只需隐藏整个位用上面的技术。

如果更改有点大,那么您可能希望使用Fragments将关联的小部件绑定在一起,然后将Fragments添加到适用于用户角色的布局中。

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