怎么固定多行EditText上每行文本的长度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么固定多行EditText上每行文本的长度?相关的知识,希望对你有一定的参考价值。

我有个可以写入多行文本的EditText,现在想固定每行可输入的字符数,我试了android:layout_width,但这个没用,有其他方法吗?

  固定多行EditText上每行文本的长度:
  <EditText
android:id="@+id/myedt"
android:layout_
android:layout_
android:text="请输入..."/>

  android:layout_gravity="center_vertical"//设置控件显示的位置:默认top,这里居中显示,还有bottom
  android:hint="请输入数字!"//设置显示在空间上的提示信息
  android:numeric="integer"//设置只能输入整数,如果是小数则是:decimal
  android:singleLine="true"//设置单行输入,一旦设置为true,则文字不会自动换行。
  android:gray="top" //多行中指针在第一行第一位置
  et.setSelection(et.length());//调整光标到最后一行
  Android:autoText //自动拼写帮助
  Android:capitalize //首字母大写
  Android:digits //设置只接受某些数字
  Android:singleLine //是否单行或者多行,回车是离开文本框还是文本框增加新行
  Android:numeric //只接受数字
  Android:password //密码
  Android:phoneNumber // 输入电话号码
  Android:editable //是否可编辑
  Android:autoLink=”all” //设置文本超链接样式当点击网址时,跳向该网址
  android:password="true"//设置只能输入密码
  android:textColor = "#ff8c00"//字体颜色
  android:textStyle="bold"//字体,bold, italic, bolditalic
  android:textSize="20dip"//大小
  android:capitalize = "characters"//以大写字母写
  android:textAlign="center"//EditText没有这个属性,但TextView有
  android:textColorHighlight="#cccccc"//被选中文字的底色,默认为蓝色
  android:textColorHint="#ffff00"//设置提示信息文字的颜色,默认为灰色
  android:textScaleX="1.5"//控制字与字之间的间距
  android:typeface="monospace"//字型,normal, sans, serif, monospace
  android:background="@null"//空间背景,这里没有,指透明
  android:layout_weight="1"//权重 在控制控 件显示的大小时蛮有用的。
  android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对?
  http://blog.sina.com.cn/s/blog_6e334dc701018dyc.html
  
参考技术A 有个属性,android:maxLength="140",以前做微博140个字的限制就是用的这个。 参考技术B android:layout_width 设置具体的值就可以限制EditText的宽度如果楼主想要固定每行可输入的字符数那可以通过addTextChangedListener自己控制 参考技术C 设置多行输入框,输入的字符如果用系统默认的,好像是系统来控制 的,我们控制不了吧! 参考技术D 只能设置editortext的行宽,至于每一行放多少字,或者如何断行,都是不容易控制的

Android:BottomSheetDialog中的多行文本EditText

我有一个底部对话框,并在布局中存在EditText。 EditText是多行,最大行是3.我把:

commentET.setMovementMethod(new ScrollingMovementMethod());
commentET.setScroller(new Scroller(bottomSheetBlock.getContext()));
commentET.setVerticalScrollBarEnabled(true);

但是当用户将开始垂直滚动EditText文本时,BottomSheetBehavior拦截事件和EditText将不会垂直滚动。

enter image description here

有谁知道如何解决这个问题?

答案

这是一个简单的方法。

yourEditTextInsideBottomSheet.setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View v, MotionEvent event) {
        v.getParent().requestDisallowInterceptTouchEvent(true);
        switch (event.getAction() & MotionEvent.ACTION_MASK){
        case MotionEvent.ACTION_UP:
            v.getParent().requestDisallowInterceptTouchEvent(false);
            break;
        }
        return false;
   }
});
另一答案

我用以下方法解决了这个问题:

  1. 我创建自定义工作围绕底部表单行为扩展本机android BottomSheetBehaviorpublic class WABottomSheetBehavior<V extends View> extends BottomSheetBehavior<V> { private boolean mAllowUserDragging = true; public WABottomSheetBehavior() { super(); } public WABottomSheetBehavior(Context context, AttributeSet attrs) { super(context, attrs); } public void setAllowUserDragging(boolean allowUserDragging) { mAllowUserDragging = allowUserDragging; } @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { if (!mAllowUserDragging) { return false; } return super.onInterceptTouchEvent(parent, child, event); } }
  2. 然后设置EditText的触摸事件,当用户触摸EditText区域时,我将通过调用方法setAllowUserDragging禁用处理事件: commentET.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (v.getId() == R.id.commentET) { botSheetBehavior.setAllowUserDragging(false); return false; } return true; } });

以上是关于怎么固定多行EditText上每行文本的长度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多行上获取edittext文本[关闭]

防止在 EditText 上输入键,但仍将文本显示为多行

解决一行文本溢出隐藏点击展开之后全部显示并自动换行每行长度一致问题

通过android eclipse的多行edittext [重复]

文字编辑框,如何限制行数,和每行的字数?

Android:BottomSheetDialog中的多行文本EditText