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將關聯的小部件綁定在一起,然後將碎片添加到適用於用戶角色的佈局。
一般來說,我建議不要使用具有幾乎相同內容的多個活動。