当前位置:   article > 正文

android学习笔记----软键盘换行按键效果测试(imeOptions)_android imeactionlabel

android imeactionlabel

主要属性就是android:imeOptions和android:imeActionLabel

但是android:imeActionLabel属性有的输入法没做,所以就没有效果,但是在模拟器上看得出来,真机具体根据输入法会有不同结果。

注意:看到其他的博客上写的都是用的android:singleLine="true"(因为默认是多行模式,而右下角的按键是用于换行的,当设置为单行模式后就没必要换行了)

但是这个方法文档显示已经废弃了

关于singleLine:@deprecated不推荐使用此属性

格式:boolean

将文本约束为单个水平滚动线,而不是让它包裹在多行上,并在按Enter键时提前聚焦而不是插入换行符。

对于不可编辑的文本,默认值为false(多行换行文本模式),但如果为inputType指定任何值,则默认值为true(单行输入字段模式)。

使用maxLines来改变静态文本的布局(比如TextView需要singleLine效果)并使用inputType属性中的textMultiLine标志代替可编辑的文本视图(比如EditText需要singleLine效果)(如果提供了singleLine和inputType,则inputType标志将覆盖singleLine的值)。

简而言之

想要达到android:singleLine="true"的效果,只需要设置inputType即可,除了textMultiLine参数均可

想要达到android:singleLine="false"的效果,只需要设置inputType="textMultiLine"均可

如果同时有singleLine和inputType属性,则以inputType属性为准,singleLine失效。

模拟器效果图:

 

真机效果图(华为荣耀v9,输入法是百度输入法华为版):

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <EditText
  7. android:id="@+id/edittext0"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:hint="actionSend"
  11. android:imeOptions="actionSend"
  12. android:imeActionLabel="呵呵哒"
  13. android:inputType="text" />
  14. <!--imeActionLabel属性有的输入法没做,所以就没有效果,但是在模拟器上看得出来,具体根据输入法会有不同结果-->
  15. <EditText
  16. android:id="@+id/edittext1"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:hint="actionDone"
  20. android:imeOptions="actionDone"
  21. android:inputType="text" />
  22. <EditText
  23. android:id="@+id/edittext2"
  24. android:layout_width="match_parent"
  25. android:layout_height="wrap_content"
  26. android:hint="actionGo"
  27. android:imeOptions="actionGo"
  28. android:inputType="text" />
  29. <EditText
  30. android:id="@+id/edittext3"
  31. android:layout_width="match_parent"
  32. android:layout_height="wrap_content"
  33. android:hint="actionNext"
  34. android:imeOptions="actionNext"
  35. android:inputType="text" />
  36. <EditText
  37. android:id="@+id/edittext4"
  38. android:layout_width="match_parent"
  39. android:layout_height="wrap_content"
  40. android:hint="actionSearch"
  41. android:imeOptions="actionSearch"
  42. android:inputType="text" />
  43. <EditText
  44. android:id="@+id/edittext5"
  45. android:layout_width="match_parent"
  46. android:layout_height="wrap_content"
  47. android:hint="actionNone"
  48. android:imeOptions="actionNone"
  49. android:inputType="text" />
  50. <EditText
  51. android:id="@+id/edittext6"
  52. android:layout_width="match_parent"
  53. android:layout_height="wrap_content"
  54. android:hint="actionPrevious(此时回车光标返回上一项)"
  55. android:imeOptions="actionPrevious"
  56. android:inputType="text" />
  57. <EditText
  58. android:id="@+id/edittext7"
  59. android:layout_width="match_parent"
  60. android:layout_height="wrap_content"
  61. android:hint="actionUnspecified"
  62. android:imeOptions="actionUnspecified"
  63. android:inputType="text" />
  64. <EditText
  65. android:id="@+id/edittext8"
  66. android:layout_width="match_parent"
  67. android:layout_height="wrap_content"
  68. android:hint="多条数据换行"
  69. android:imeOptions="actionSend"
  70. android:inputType="textMultiLine" />
  71. </LinearLayout>

 MainActivity.java

  1. import android.os.Bundle;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.util.Log;
  4. import android.view.KeyEvent;
  5. import android.view.inputmethod.EditorInfo;
  6. import android.widget.EditText;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. public class MainActivity extends AppCompatActivity {
  10. private static final String TAG = "MainActivity";
  11. private EditText editText0, editText1, editText2, editText3, editText4, editText5, editText6, editText7, editText8;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. editText0 = (EditText) findViewById(R.id.edittext0);
  17. editText1 = (EditText) findViewById(R.id.edittext1);
  18. editText2 = (EditText) findViewById(R.id.edittext2);
  19. editText3 = (EditText) findViewById(R.id.edittext3);
  20. editText4 = (EditText) findViewById(R.id.edittext4);
  21. editText5 = (EditText) findViewById(R.id.edittext5);
  22. editText6 = (EditText) findViewById(R.id.edittext6);
  23. editText7 = (EditText) findViewById(R.id.edittext7);
  24. editText8 = (EditText) findViewById(R.id.edittext7);
  25. editText2.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  26. @Override
  27. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
  28. switch (actionId) {
  29. case EditorInfo.IME_ACTION_GO:
  30. Toast.makeText(MainActivity.this, "前往的逻辑开始...", Toast.LENGTH_SHORT).show();
  31. break;
  32. }
  33. Log.d(TAG, "actionid=======" + actionId);
  34. return true;
  35. }
  36. });
  37. }
  38. }

这里只写了edittext2的监听事件,actionId为EditorInfo.IME_ACTION_GO

这几个imeOptions的ID分别为:

public static final int IME_MASK_ACTION = 0x000000ff;

public static final int IME_ACTION_UNSPECIFIED = 0x00000000;

public static final int IME_ACTION_NONE = 0x00000001;

public static final int IME_ACTION_GO = 0x00000002;

public static final int IME_ACTION_SEARCH = 0x00000003;

public static final int IME_ACTION_SEND = 0x00000004;

public static final int IME_ACTION_NEXT = 0x00000005;

public static final int IME_ACTION_DONE = 0x00000006;

public static final int IME_ACTION_PREVIOUS = 0x00000007;

可以设置相应的操作。

 

========================Talk is cheap, show me the code========================

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/391022
推荐阅读
相关标签
  

闽ICP备14008679号