Android: Switch 在点击后失去焦点

Android: Switch loses focus after click

嘿嘿,我目前正在开发一个包含表单的应用程序,其中包含一些编辑文本字段、一些复选框和最后的开关。布局如下所示:

<RelativeLayout>
  <ScrollView>
    <LinearLayout>
       <LinearLayout>
         <TextView></TextView>
         <Checkbox></Checkbox>
       </LinearLayout>
       <LineraLayout>
         <TextView></TextView>
         <EditText></EditText>
       </LinearLayout>
       <LinearLayout>
         <TextView></TextView>
         <Switch></Switch>
       </LinearLayout>
     </LinearLayout>
  </ScrollView>
</RelativeLayout>

现在,如果我单击开关,开关将失去焦点,滚动视图将滚动到第一个表单元素,即复选框。我已经尝试在 Switch 的上部 LinearLayout 中使用带有 "blocksDescendants" 的 descendantFocusability 属性,但它不起作用。

有人知道如何解决这个问题吗?

好的,我自己解决了这个问题。我发布了我的解决方案,以便它可以帮助其他可能遇到相同问题的人。

在我的代码中有一个特定的函数,它为我的所有表单元素调用 setVisibility(View.Visible) 方法(这在我的项目中用于显示可能的依赖表单元素,应该只显示,当用户点击复选框或其他东西)。 如果我单击开关或复选框,我的代码会为所有表单元素以及 Edittext 调用 setVisibility-Method。这会请求焦点,因此滚动视图会将此元素滚动到屏幕的 middle/focus。 我通过不为已经可见的对象调用 setVisibility 方法解决了这个问题。

希望这对其他人有帮助 ;-)