2015-09-08 69 views
1

我有一个用户界面屏幕上的EditText行来输入一个句子。如果用户将光标留在句子的中间,然后改变方向,我希望光标移动到句子的末尾。我的理解是,操作系统创建一个新的活动,并重新定位方向变化,所以我设置了下面的代码,但无济于事。请指教。如何在方向更改后将光标移动到EditText行的末尾?

部分活动文件:

... 
cListenerEditText.setOnFocusChangeListener(new OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus && (cListenerEditText.getText().length() > 0)) { 
       cListenerEditText.setSelection(cListenerEditText.getText().length()); 
      } 
     } 
    }); 

回答

3

试加requestFocus为此在onResume代替,检查布尔字段有它只是在娱乐工作。

if(!initialized) { 
    initialized = true; 
    cListenerEditText.setSelection(cListenerEditText.getText().length()); 
} 

编辑:

样品活动

public class MainActivity extends AppCompatActivity { 

    private EditText cListenerEditText; 
    private boolean initialized = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    cListenerEditText = findViewById(R.id.listenerEditText); 
    } 

    @Override 
    protected void onResume() { 
    super.onResume(); 
    if(!initialized) { 
     initialized = true; 
     cListenerEditText.setSelection(cListenerEditText.getText().length()); 
    } 
    } 
} 
+0

有趣的是,我会尝试。我是Android编程的新手,“!”是什么?感叹号呢? – AJW

+0

它表示否定,即未初始化,当'initialized'为'true'时,''initialized'的值为'false' –

+0

谢谢。我很好奇哪种解决方案更高效,您的“onResume”方法或下面推荐的Wesley Manifest.xml解决方案。思考? – AJW

0

public void onRestoreInstanceState(Bundle savedInstanceState)

1

首先,你需要添加活动的财产Manifest.xml文件,像这样:android:configChanges="orientation"

然后,在您的活动中,覆盖onConfigurationChanged,因为每个方向都会更改,所以会调用此方法。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    cListenerEditText.setSelection(cListenerEditText.getText().length()); 
} 
+0

好的,我很好奇哪种解决方案更有效率,您的“newConfig”解决方案还是Derek Fung推荐的“onResume”方法? – AJW

+0

矿井效率更高。如果你的'Manifest'中没有'android:configChanges'标签,你的Activity将会被Android OS重新启动,因此'onResume'工作。根据[文档](http://developer.android.com/intl/zh-cn/guide/topics/resources/runtime-changes.html#HandlingTheChange),我的解决方案将避免活动重新启动,并且不会更新资源,所以更高效。 – Wesley

相关问题