1
我在我的应用程序中有几个用户角色。除了一些小的变化外,它们的一些屏幕应该几乎相似。有没有办法为所有用户创建一个布局,然后在运行时更改一些UI元素(在用户登录后),还是应该为每个用户角色创建新布局?什么是最好的方法?Android:如何组织几个屏幕有点不同的信息?
我在我的应用程序中有几个用户角色。除了一些小的变化外,它们的一些屏幕应该几乎相似。有没有办法为所有用户创建一个布局,然后在运行时更改一些UI元素(在用户登录后),还是应该为每个用户角色创建新布局?什么是最好的方法?Android:如何组织几个屏幕有点不同的信息?
如果变化是真正的未成年人,只需使用相同的布局对于所有,然后根据用户的角色,隐藏或删除不需要的onCreate()
呼叫的用户界面元素,例如:
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将关联的小部件绑定在一起,然后将碎片添加到适用于用户角色的布局。
一般来说,我建议不要使用具有几乎相同内容的多个活动。