Hey Hey目前我正在开发一个包含表单的应用程序,其中包含一些edittext字段,一些复选框和一个开关。布局如下所示:
<RelativeLayout>
<ScrollView>
<LinearLayout>
<LinearLayout>
<TextView></TextView>
<Checkbox></Checkbox>
</LinearLayout>
<LineraLayout>
<TextView></TextView>
<EditText></EditText>
</LinearLayout>
<LinearLayout>
<TextView></TextView>
<Switch></Switch>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
现在,如果我单击开关,开关将失去焦点,并且scrollview会滚动到第一个表单元素,即复选框。我已经尝试在switch的上部LinearLayout中使用descendantFocusability属性和“blockDescendants”,但它不起作用。
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
好的,我能够自己解决问题。我正在发布我的解决方案,以便对可能遇到同样问题的其他人有所帮助。
在我的代码中有一个特定的函数,它为我的所有表单元素调用setVisibility(View.Visible)
方法(这在我的项目中用于显示可能的dependend表单元素,只有当用户点击时才会显示在一个复选框或其他)。
如果我单击开关或复选框,我的代码会调用所有表单元素的setVisibility-Method,也适用于Edittext。这会请求焦点,因此scrollview将此元素滚动到屏幕的中间/焦点。
我通过不调用已经可见的对象的setVisibility方法解决了这个问题。
希望这可能对其他人有帮助;-)