textView.setText("哈哈");
textView.setHint("哈哈哈哈哈哈");
hint属性对TextView(或者EditText)的影响,直接看下图
:
使用上下两个TextView控件进行对比,
第一行的“哈哈哈哈哈哈哈”是作为对比的TextView,
第二行的“哈哈”是上面代码操作的
TextView
找到TextView的onMeasure方法
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
..........省略...............
if (mHint != null) {
int hintDes = -1;
int hintWidth;
if (mHintLayout != null && mEllipsize == null) {
hintDes = desired(mHintLayout);
if (hintDes < 0) {
hintBoring = BoringLayout.isBoring(mHint, mTextPaint, mTextDir, mHintBoring);
if (hintBoring != null) {
mHintBoring = hintBoring;
if (hintBoring == null || hintBoring == UNKNOWN_BORING) {
if (hintDes < 0) {
hintDes = (int) Math.ceil(Layout.getDesiredWidth(mHint, mTextPaint));
hintWidth = hintDes;
} else {
hintWidth = hintBoring.width;
if (hintWidth > width) {
width = hintWidth;
if (mHint != null){
if (hintWidth > width) {
width = hintWidth;
}
所以 如果设置了hint属性, 在onMeasure测量TextView宽高时候,一定会把hint计算进去,当实际text字符比hint字符少,就会出现如文章开始处的效果。
解决方案:用text模拟hint
textView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("onTextChanged--"+s);
if (TextUtils.isEmpty(s)){
textView.setText("模拟hint文字");
//这里设置为hint字体,一定要在setsetText("模拟hint文字") 之后
//因为setText("模拟hint文字")的时候,还会调用onTextChanged
//这是个小瑕疵
textView.setTextColor(Color.BLUE);
}else {
textView.setTextColor(Color.RED);
@Override
public void afterTextChanged(Editable s) {
//在这里也能实现
textView.setText("哈哈");textView.setHint("哈哈哈哈哈哈");hint属性对TextView(或者EditText)的影响,直接看下图:使用上下两个TextView控件进行对比,第一行的“哈哈哈哈哈哈哈”是作为对比的TextView,第二行的“哈哈”是上面代码操作的TextView找到TextView.setHint(CharS
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ls1792304830/article/details/52738422
(1),...
在开发中 碰到这样一个问题:设置了
hint属性后,相应的
TextView的最小宽度也会跟你设置的文字长度有关,这就是这个问题的最终原因;
百度了许多,没有找到 解决的办法,于是就 尝试 自己解决:思路有三种
1.手动添加
hint ,监控
textView 是否为空;这个比较麻烦
2.修改
EditText 的
属性,editadle 设为false ;
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:orientation="horizontal"> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="时间:" android:textSize="20dp"/> <EditText android:id="@+id/ed_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入预约时间" android:textSize="20dp" /> </LinearLayout> 布局超过app的界面 如何调整实现下滑能看到超过的内容
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal">
<
TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时间:"
android:textSize="20dp"/>
<
EditText
android:id="@+id/ed_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:
hint="请输入预约时间"
android:textSize="20dp"
</LinearLayout>
</ScrollView>
这样就可以通过滑动来查看超出屏幕的部分。
Glide导致的RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap
我爱人工智能:
LinkedHashMap源码解析(基于JDK1.8)
Cdf(人名):
Glide导致的RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap
彼 方:
Glide导致的RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap
大家一起学编程(python):
LinkedHashMap源码解析(基于JDK1.8)
彼 方:
Glide导致的RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap
LinkedHashMap源码解析(基于JDK1.8)
Android Binder机制情景源码分析之Binder回调注册和反注册