我的内部有一些固定的字符串strings.xml
,例如:
<resources>
<string name="somestring">
<B>Title</B><BR/>
Content
</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
在我的布局中,我有一个TextView
我想填充html格式的字符串.
<TextView android:id="@+id/formattedtext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/htmlstring"/>
Run Code Online (Sandbox Code Playgroud)
如果我这样做,内容formattedtext
只是somestring
剥离任何html标签的内容,因此没有格式化.
我知道可以用编程方式设置格式化文本
.setText(Html.fromHtml(somestring));
因为我在我的程序的其他部分使用它,它按预期工作.
要调用这个函数我需要一个Activity
,但是目前我的布局只是一个简单的或多或少的静态视图,我希望保持这种方式,以节省我创建一个Activity
刚刚设置一些的开销文本.
我忽略了一些明显的东西吗 它根本不可能吗?欢迎任何帮助或变通方法!
编辑:刚试了一些东西,似乎xml中的HTML格式有一些限制:
标签必须写成小写
这里提到的一些标签 不起作用,例如<br/>
(可以改为使用\n
)
这是XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/modal_list_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="7.5dp"
android:orientation="vertical" >
<TextView
android:id="@+id/title_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="@string/alert_title_small"
android:textColor="@color/alert_dialog_text_color"
android:textSize="@dimen/alert_dialog_title_font_size"
android:textStyle="bold" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
尽管图形布局显示粗体文本,但设备上却没有.它是设备还是什么?
更新:
对于那些不断要求完整XML的人来说,这里会更新.一个简单的相对布局.这是Java代码:
this.titleTextView.setText(this.modalListState.title);
Run Code Online (Sandbox Code Playgroud)
需要考虑的事项:可能是因为设备字体?有没有人有Galaxy S3确认?这可能是活动风格吗?这是用于整个应用程序的一个:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style …
Run Code Online (Sandbox Code Playgroud) 我无法让 AlertDialog 中的文本以粗体或斜体显示。
我尝试过直接格式化,也尝试过使用Android 字符串资源页面中的 CharSequence 实用程序,但我总是只得到纯文本。
我究竟做错了什么?
MyFragment.java
String idFormatted = String.format(resources.getString(R.string.id));
CharSequence idStyledText = Html.fromHtml(idFormatted);
CharSequence nameItalic = Utilities.italic(resources.getString(R.string.name));
String typeFormatted = String.format(resources.getString(R.string.type));
CharSequence typeStyledText = Html.fromHtml(idFormatted);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setPositiveButton("Dismiss",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setIcon(android.R.drawable.ic_dialog_info);
builder.setMessage( idFormatted + myData.getId() + "\t\t" + nameItalic + myData.getName() + "\t\t" + typeFormatted + myData.getType() );
Dialog dialog = builder.create();
dialog.setTitle("Details");
dialog.show();
Run Code Online (Sandbox Code Playgroud)
字符串.xml
<string name="id"><i>Id: </i></string>
<string name="name"><i>Name: </i></string> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从strings.xml文件中为TextView android:text属性分配以下字符串.我无法将链接显示为可点击的超链接.有什么建议?我尝试过以下技巧.
<string name="no_device_body">click following link: <![CDATA[<a href="http://cnn.com">link1</a>]]>
</string>
<string name="no_device_body">click following link: http://cnn.com">
</string>
Run Code Online (Sandbox Code Playgroud)