我的TextViews
设置了android:layout_width="wrap_content"
设置的提示,如果输入TextView
的文字不如提示文字的宽度那么宽,那么TextView
不会更改其宽度以包装文本。但是,如果输入的文本比提示文本的宽度宽,并且假设TextView
有扩大的空间,那么它将增长以包装文本。
理想情况下,我想要的是TextView
缩小到我的文本,无论提示文本的宽度是什么(TextView
的原始宽度),但我也会除了提供获取文字宽度的方法的答案,因此我可以使用该宽度在setWidth
上调用TextView
。
我已经尝试在初始化之后将TextView
的最小宽度更改为0,但这并不能解决问题。有趣的是,如果我输入比提示文本更宽的文本(强制它增长),如果我从该文本中删除字符,直到它返回到提示文本强制它具有的宽度,它将缩小。我想要的是它始终缩小到文本的宽度,无论提示文本的宽度如何。
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<TextView
android:id="@+id/month_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="mm"
android:textColorHint="@color/hint_color"
android:singleLine="true"
android:textSize="40sp"
android:maxLength="2"/>
<TextView
android:id="@+id/first_hypen_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="-"
android:singleLine="true"
android:textSize="40sp"/>
<TextView
android:id="@+id/day_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="dd"
android:textColorHint="@color/hint_color"
android:singleLine="true"
android:textSize="40sp"
android:maxLength="2"/>
<TextView
android:id="@+id/second_hyphen_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="-"
android:singleLine="true"
android:textSize="40sp"/>
<TextView
android:id="@+id/year_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="yyyy"
android:textColorHint="@color/hint_color"
android:singleLine="true"
android:textSize="40sp"
android:maxLength="4"/>
</LinearLayout>
答案 0 :(得分:1)
使用&#34; ems&#34;提示长度
e.g。在XML设计中
android:ems="2"
这里为你day_textview提示&#34; dd&#34;,它的长度是2然后是android:ems =&#34; 2&#34;
OR,在自定义代码中
TextView tvDay = (TextView) findViewById(R.id.day_textview);
tvDay.setEms(tvDay.getHint().length());
所以&#34; ems&#34;结果是指最宽的角色的大小,通常是&#34; M&#34;得到它?因此,在EditText或TextView上将minEms设置为整数值(例如3)应确保其宽度至少为3个字符。您也可以设置maxEms。
我理解的是,你想要一个带提示字符长度宽度的文本。当您输入的文本多于提示长度时,您的文本应缩小,直到输入文本长度为止。一旦完成并删除了所有输入的文本,那么它应该采用相同提示的长度宽度。
为此提供了上述信息。
测试例如。
添加XML布局:
<EditText
android:id="@+id/edtCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:hint="abc"
android:maxLines="1"
android:text="I am an Android Developer" />
将此添加到您的活动中:
EditText edt = (EditText) findViewById(R.id.edtCheck);
edt.setEms(3);//3 just for test
edt.setMaxEms(1000);//1000 just for test
现在运行并检查它是否适用于你正在寻找的东西。
答案 1 :(得分:1)
我最终做的是在TextView
到""
时将提示设置为文本,然后将提示重置为原始提示,如果所有文本都从它。这样,一旦输入文本,任何设置强制TextView
具有最小宽度 - 由于初始提示文本宽度 - 将在设置新提示后重新配置,并且新的最小值{ {1}}宽度设置为0,因为新的提示文字宽度(TextView
);如果所有文本都被删除,提示仍会按预期显示。