如何在android的Java端设置文本样式?
我有下面的代码,我想使时间戳比文本的其余部分小,但已经挣扎了2天让它工作 代码:如何在android的Java端设置文本样式?,java,android,Java,Android,我有下面的代码,我想使时间戳比文本的其余部分小,但已经挣扎了2天让它工作 代码: private void alignTheMessageHistory(String username, String message, String sentdt) { StringBuffer sBuffer = new StringBuffer(); // if (username.equals(friend.userName)) { // sBuffer.append(username
private void alignTheMessageHistory(String username, String message, String sentdt) {
StringBuffer sBuffer = new StringBuffer();
// if (username.equals(friend.userName)) {
// sBuffer.append(username + ":\n");
// }
sBuffer.append(message + "\n");
RelativeLayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams topParams = new RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
topParams.setMargins(10, 10, 10, 10);
layout.setLayoutParams(topParams);
TextView valueTV = new TextView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
if (username.equals(friend.userName)) {
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
valueTV.setBackgroundResource(R.drawable.left_gray);
valueTV.setPadding(15, 5, 10, 5);
} else {
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
valueTV.setBackgroundResource(R.drawable.right_blue);
valueTV.setPadding(10, 5, 15, 5);
}
params.setMargins(0, 5, 0, 0);
sBuffer.append(((sentdt == null)
? java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime())
: sentdt)); ////////////////////////////NEED THIS TO BE SMALLER
valueTV.setLayoutParams(params);
valueTV.setText(sBuffer);
//
valueTV.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
((ScrollView) findViewById(R.id.scrollView))
.fullScroll(View.FOCUS_DOWN);
}
});
layout.addView(valueTV);
messageHistoryText.addView(layout);
}
您可以使用或。关于这个话题已经有很多人在讨论了
下面是一个使用Html
类的示例:
String s = sentdt;
if(s == null) {
s = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
}
valueTV.setText( Html.fromHtml(Html.escapeHtml(message) + "<br><small>" + s + "</small>") );
String s=sentdt;
如果(s==null){
s=java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
}
valueTV.setText(Html.fromHtml(Html.escapeHtml(message)+“
”+s+”);
您尝试了什么?您观察到了哪些问题?充分描述你的问题和研究。我尝试了很多方法,使用html.fromHTMLECT创建了一个新的缓冲区。但是没有任何工作/使用精确的代码不会在应用程序中显示sentdt值,将valueTV.setText更改为sBuffer.append会返回值,但实际上不会显示“样式”it@ShaunJansenVanNieuwenhuizen你确定没有“覆盖”它吗?如果你使用我的代码,你根本不能使用sBuffer
。让它工作吧。非常感谢。我注释掉了底部的“valueTV.setText(sBuffer);”,它就像一个符咒!这也使我对整个概念的理解更加清晰。