gpt4 book ai didi

android - requestFocus 不适用于 EditText

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:52 25 4
gpt4 key购买 nike

解决这个问题花了很多时间,看起来很容易,但我真的很累,找不到解决方案。我有一个 Activity , Activity 有 4 个 EditText 组件,其中 2 个有包含列表的弹出菜单(AlertDialog),下一个 - 禁用编辑,最后一个 - 可编辑,并且应该显示软键盘,当用户是点击它。

此外,我的根 LinearLayout 具有包含在 RelativeLayout 中的 LinearLayout。最后一个是需要 AdvBanner。最后一个 LinearLayout(RelativeLayout) 对齐到根布局的底部。

描述它的 XML 部分:

  <LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="bottom"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="bottom">
<RelativeLayout
android:id="@+id/AdvLayoutReserveArea"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="#FFFFFF"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="bottom" />
</LinearLayout>

当 Activity 开始时,可​​编辑的 EditText 具有带有 GREEN 边框的焦点并且光标闪烁。几秒钟后,将加载并显示 AdvBanner。当它发生时,可编辑的 EditText 失去了焦点。从这一刻起,我的生活就像一场噩梦。

让我们一步步来看。

问题 1.如果在 THIS MOMENT(当 Adv 加载并出现时)用户正在通过软键盘编辑 EditText 字段,则焦点丢失,边框采用 GRAY 颜色,如果用户继续键入文本没有结果 - 符号未打印(EditText 中的 CURSOR 太丢失了)。

我认为任何用户都会感到恼火 - 当您键入文本时,光标处于非 Activity 状态,因为在后台加载了一些 adv 并且它会自行聚焦。

为了解决这个问题,在加载 Adv 的方法中(显示)我尝试通过 requestFocus 方法手动将焦点返回到 EditText。

public void onAdLoaded() 
{
// TODO Auto-generated method stub
// add app specific code for this event here...
// called when an ad is successfully displayed on device
CountEdit1.requestFocus();
}

是的,光标返回到 EditText 字段,如果软键盘处于 Activity 状态,用户仍然可以输入文本,但 EditText 字段的边框保持灰色...

注意:实际上我不确定聚焦 EditText 的绿色和灰色边框之间的区别。绿色通常是在用户点击它时,而灰色可能是我们想要的时候手动请求焦点(使用 requestFocus() 等)

问题 2。(作为溶剂化问题 #1 的结果)。软键盘关闭后,如果用户点击可编辑的EditText字段,它会获得焦点并且光标出现在里面,但是再次显示软键盘没有反应!点击它不会显示软键盘,但看起来像复制模式下的编辑字段 - 当用户可以选择文本并将其剪切/复制到剪贴板时。

我的目标很简单,一眼就能看出来。我只想在显示软键盘并且用户键入一些文本时保存光标并聚焦到可编辑的 EditText 字段 (CountEdit1)。当用户点击 EditText 时的正常 react - 像往常一样,只显示软键盘!

我在这里阅读了所有问题,我结合了不同的方法(clearFocus、requestFocusFromTouch 等),只是没有足够的时间和空间来描述我为解决这个问题所做的所有努力。主要问题如上所述。

希望得到帮助和解决问题...提前致谢..

最佳答案

目标已解决,解决方法比我想象的要容易。问题 #2 通过使用 onClick () 方法解决。同时使用 clearFocus() 和 requestFocus() 方法的软键盘出现的充分条件。

   CountEdit1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v)
{
CountEdit1.clearFocus();
CountEdit1.requestFocus();
}
});

当用户点击 EditText 字段时会出现软键盘。固定。

关于android - requestFocus 不适用于 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com