相关疑难解决方法(0)

requestFocus对EditText无法正常工作

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

另外,我的根LinearLayout有LinearLayout,里面包含RelativeLayout.最后一个需要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>
Run Code Online (Sandbox Code Playgroud)

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

让我们一步一步看.

问题1. 如果THIS MOMENT(进阶时加载和显示)用户通过软键盘编辑一个EditText领域,焦点将丢失,边境采取了灰色的颜色,如果用户继续键入文本没有结果-符号没有打印(EditText中的CURSOR太丢失了).

我认为任何用户都会恼火 - 当你输入文字时,光标处于非活动状态,因为在后台会加载一些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();
}
Run Code Online (Sandbox Code Playgroud)

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

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

问题2.(由于溶剂化问题#1).关闭软键盘后,如果用户点击可编辑的EditText字段,则会将焦点和光标显示在内部,但对于再次显示软键盘没有反应!点击它不显示软键盘,但看起来像复制模式中的编辑字段 - 用户可以选择文本并将其剪切/复制到剪贴板.

我的目标很容易初看.我只想保存光标并将焦点转移到可编辑的EditText字段(CountEdit1),同时显示软键盘并且用户键入一些文本.当用户点击EditText时正常反应 - 通常只显示软键盘!

我在这里阅读了所有问题,我结合了不同的方法(clearFocus,requestFocusFromTouch等),只是没有足够的时间和空间来描述我试图解决的所有问题.主要问题如上所述. …

android focus cursor android-layout android-edittext

12
推荐指数
3
解决办法
2万
查看次数

无法管理requestFocus一个Spinner

我的屏幕问题很烦人.屏幕由一堆一个在另一个下面的Spinners组成,然后在微调器下面,一个EditText.

问题是当屏幕启动时,EditText具有焦点,这意味着一些Spinners不在屏幕顶部.尽我所能,我无法通过<requestFocus/>在屏幕上使用XML或requestFocus()在代码中使用顶级Spinner开始集中注意力.我试图做什么requestFocus跳过下一个EditText建议,如果我正确地遵循建议,它也不起作用.

要重现此问题,请在Eclipse中创建一个新的Android项目.main.xml是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Spinner 
        android:id="@+id/spinner"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">   
        <requestFocus />
    </Spinner>
    <EditText  
        android:id="@+id/edittext"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动代码是

package nz.co.kb.testspinner;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class TestSpinner extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
        View view = getLayoutInflater().inflate(R.layout.main, null);
        final View spinner = view.findViewById(R.id.spinner);
        view.post(new Runnable() {
            public void …
Run Code Online (Sandbox Code Playgroud)

android focus spinner android-edittext

11
推荐指数
2
解决办法
1万
查看次数