【发布时间】:2014-12-22 12:28:55
【问题描述】:
目前情况:
我们有不同的用户界面,它们被构建为片段,例如 MenuFragment:
public class MenuFragment extends Fragment implements Hideable, View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.view = inflater.inflate(R.layout.menu, container, false);
}
@Override
public void hide() {
view.setVisibility(View.GONE);
}
@Override
public void show() {
view.setVisibility(View.VISIBLE);
}
}
可隐藏:
public static interface Hideable {
void hide();
void show();
}
状态是枚举:
public enum InterfaceState {
STANDARD, TWO, THREE ;
private List<Hideable> visibleElements;
private void setVisibleElements(Hideable[] visibleElements) {
this.visibleElements = Arrays.asList(visibleElements);
}
}
设置它们使用:
InterfaceState.STANDARD.setVisibleElements(new Hideable[] { menuFragment });
menuFragment 在哪里
menuFragment = (MenuFragment) activity.getFragmentManager().findFragmentById(R.id.menu_fragment);
现在我调用 changeToState 更改状态:
public void changeToState(InterfaceState state) {
List<Hideable> hideList = new LinkedList<>();
for (Hideable e : this.currentState.visibleElements) {
if (!state.visibleElements.contains(e))
hideList.add(e);
e.hide();
}
List<Hideable> showList = new LinkedList<>();
for (Hideable e : state.visibleElements) {
if (!this.currentState.visibleElements.contains(e))
showList.add(e);
e.show();
}
系统似乎有问题。有时 UI 元素不会出现。
问题:
- 这是实现 UI 的好方法吗?如果没有,有什么更好的方法?
- Android 是否为 Visibility="GONE" 的视图分配空间?要使用上层机制,我需要在应用启动时直接定义所有 UI 元素(如 MenuFragment menuFragment)。
- 有什么建议/改进吗?
感谢所有读者。
【问题讨论】:
标签: android user-interface dynamic fragment state