根据需求,要在一个TextView上展示 “@我是圈a” 。
按照Android的规范,在Strings.xml 文件中定义:<stringname="str">@我是圈a</string> 。但是这样会报错的。
那么,直接在布局里定义呢?同样报错
那么问题来了,难道就只能在代码中定义String str = “@我是圈a”; tv.setText(str);了吗?
在代码中定义无疑是可以实现的,但是如果国际化的话,就很麻烦。
其实很简单,如果明白为什么会报错的话。我们平时是怎么在布局里给TextView或者Button设置text的?没错 android:text = "@string/str"。所以你用@,编译器以为你要@string 或者 @id @dimen 什么的呢。
所以,解决办法来了。。。
没错,转义啊!
<string name="str">\@我是圈a</string>
<TextView
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str"
android:padding="@dimen/activity_horizontal_margin"
android:background="@color/btn_green_normal" />
妥妥的!