Android Studio中Java生成的字符串如何在XML布局正常显示
你的Java代码里拼接字符串、给TextView赋值的核心逻辑是对的,文本无法正常显示基本是以下几个易踩的新手坑导致的,按顺序改就能解决:
字符串资源未定义/名称不匹配
你代码里调用的R.string.DontHaveAcc、R.string.Sign_Up需要先在res/values/strings.xml文件中定义,只要这两个资源不存在、或者名称大小写写错,App运行到这行就会崩溃,后续的文本设置逻辑根本不会执行。
打开strings.xml,补充对应字符串即可,示例:<resources> <string name="app_name">登录应用</string> <string name="DontHaveAcc">还没有账号?</string> <string name="Sign_Up">立即注册</string> </resources> > 注意:`name`属性的值必须和Java代码里`R.string.`后面的内容完全一致,区分大小写。布局边距过大把文本挤出屏幕
你给登录按钮设置了android:layout_marginBottom="250dp"的超大下边距,垂直排列的LinearLayout里,这个边距会直接把按钮下方id为Sign的TextView挤到屏幕可视区域外,就算文本设置成功你也看不到。
把这个边距改到合理数值即可,比如改成android:layout_marginBottom="40dp",底部的文本就会回到屏幕可视范围内。文字样式和背景重合导致看不见
你没有给id为Sign的TextView设置文字颜色、字号,如果App主题默认文字颜色和布局背景色一致(比如白底白字),就算文本渲染了也看不到。可以给这个TextView补充基础样式属性:<TextView android:id="@+id/Sign" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="16sp" android:textColor="#114a60" />
你完全不需要在Java代码里手动拼接固定字符串,可以直接在strings.xml里定义好拼接完成的完整文本:
<string name="sign_tip">还没有账号? 立即注册</string>
之后Java代码里直接给TextView设置这个资源就行,省去拼接步骤:
TextView textView = findViewById(R.id.Sign); textView.setText(R.string.sign_tip);
如果后续需要给“立即注册”加点击跳转、变色等效果,再用Java代码处理富文本即可,新手阶段优先实现基础显示功能。
改完以上内容,重新运行App就能看到拼接后的文本正常显示了。
内容的提问来源于stack exchange,提问作者ChickenMarmalade

