自定义视图焦点区域

Posted

技术标签:

【中文标题】自定义视图焦点区域【英文标题】:Custom view focus area 【发布时间】:2018-09-06 07:42:38 【问题描述】:

我有一个看起来像这样的自定义视图:

<LinearLayout
    android:orientation="vertical">
    <TextInputLayout>
        <TextInputEditText />
    </TextInputLayout>
    <TextView
        android:text="Some info text" />
</LinearLayout>

它基本上是一个带有提示的普通编辑文本,下面有“信息”文本。

当我尝试在自定义视图上requestFocus() 时出现问题。它正确地将光标放在编辑文本中,但仅滚动到编辑文本的底部。因此,“信息”文本是“隐藏”的,直到用户向下滚动一点。

是否可以告诉自定义视图它的“焦点区域”是什么?或者可能是另一种使系统正确滚动的机制(即滚动到“信息”文本的底部?

任何帮助将不胜感激。谢谢。

【问题讨论】:

尝试将 maxlines 设置为 1 谢谢,但运气不好:( 给Textview加个id试试 【参考方案1】:

调用这个方法并传递你的EditText和ScrollView的变量,

  private void focusOnView(ScrollView scrollView, EditText editText) 
    scrollView.post(new Runnable() 
        @Override
        public void run() 
            scrollView.scrollTo(0, editText.getBottom());
            editText.requestFocus();
        
    );

完成了

【讨论】:

以上是关于自定义视图焦点区域的主要内容,如果未能解决你的问题,请参考以下文章

onDraw 滚动视图中的自定义视图

使用自定义视图的AlertDialog

使自定义 SwiftUI 视图适应内置修饰符

iOS 11 中的 SafeArea:如何在没有安全区域的情况下使用自定义导航栏在主屏幕上添加来自 Objective-c 代码的视图

向 ARKit 添加自定义视图

iOS小技能:适配安全区域高度