我有一个应用程序,它在横向模式下并排显示两个片段。两者始终对用户可见,并动态加载到框架布局中。
现在改变纵向方向我想在单帧布局中显示单个片段。我需要了解用户在方向更改期间正在处理哪个片段。我无法理解用户在哪里工作。这两个片段都有多个EditText视图。
我读过关于
getWindow().getCurrentFocus();
在一个答案中,但这将给我一个观点。现在,如果视图深深嵌套在片段布局中,是否有更好更快的方法来查找在方向更改期间哪些片段处于焦点?
我使用land / layout.xml和layout.xml来布局不同的方向。陆地有2个框架布局,肖像只有一个。
答案 0 :(得分:0)
我的第一个想法:
我会跟踪哪个EditText有焦点。
1)为每个EditText设置一个代码(setTag()
),代表它们代表哪个面板,有些代码为panel1
,有些代码为panel2
。
2)在每个EditText上设置此监听器:
boolean firstPanelVisible = true;
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
if(v.getTag().equals("panel1")) {
firstPanelVisible = true;
} else {
firstPanelVisible = false; // the second panel is visible.
}
}
}
}
});
// TODO When changing orientation check which panel is focused.