나는이 textView
숫자 (변수)와 내부를하고는 string
, 내가 어떻게보다 큰 번호를 하나의 크기를 줄 수 string
? 코드:
TextView size = (TextView)convertView.findViewById(R.id.privarea_list_size);
if (ls.numProducts != null) {
size.setText(ls.numProducts + " " + mContext.getString(R.string.products));
}
ls.numproducts의 크기가 나머지 텍스트와 다른 크기를 원합니다. 수행하는 방법?
답변
사용 Spannable String
String s= "Hello Everyone";
SpannableString ss1= new SpannableString(s);
ss1.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color
TextView tv= (TextView) findViewById(R.id.textview);
tv.setText(ss1);
스냅 샷
공백을 사용하여 문자열을 분할하고 필요한 문자열에 범위를 추가 할 수 있습니다.
String s= "Hello Everyone";
String[] each = s.split(" ");
이제 적용 span
받는 string
동일한에 추가 textview
.
답변
동일한 텍스트보기에서 여러 개의 다른 크기를 설정하는 방법이 궁금하지만 상대 크기가 아닌 절대 크기를 사용하는 경우를 AbsoluteSizeSpan
대신 하여 사용할 수 있습니다 RelativeSizeSpan
.
원하는 텍스트 크기의 픽셀 단위로 치수를 얻으십시오.
int textSize1 = getResources().getDimensionPixelSize(R.dimen.text_size_1);
int textSize2 = getResources().getDimensionPixelSize(R.dimen.text_size_2);
그런 다음 AbsoluteSpan
텍스트를 기반으로 새를 만듭니다.
String text1 = "Hi";
String text2 = "there";
SpannableString span1 = new SpannableString(text1);
span1.setSpan(new AbsoluteSizeSpan(textSize1), 0, text1.length(), SPAN_INCLUSIVE_INCLUSIVE);
SpannableString span2 = new SpannableString(text2);
span2.setSpan(new AbsoluteSizeSpan(textSize2), 0, text2.length(), SPAN_INCLUSIVE_INCLUSIVE);
// let's put both spans together with a separator and all
CharSequence finalText = TextUtils.concat(span1, " ", span2);
답변
html 문자열을 사용하여 HTML을 Textview로 설정 하여이 작업을 수행 할 수 있습니다
txtView.setText(Html.fromHtml("Your html string here"));
예를 들면 다음과 같습니다.
txtView.setText(Html.fromHtml("<html><body><font size=5 color=red>Hello </font> World </body><html>"));`
답변
방법 1
public static void increaseFontSizeForPath(Spannable spannable, String path, float increaseTime) {
int startIndexOfPath = spannable.toString().indexOf(path);
spannable.setSpan(new RelativeSizeSpan(increaseTime), startIndexOfPath,
startIndexOfPath + path.length(), 0);
}
사용
Utils.increaseFontSizeForPath(spannable, "big", 3); // make "big" text bigger 3 time than normal text
방법 2
public static void setFontSizeForPath(Spannable spannable, String path, int fontSizeInPixel) {
int startIndexOfPath = spannable.toString().indexOf(path);
spannable.setSpan(new AbsoluteSizeSpan(fontSizeInPixel), startIndexOfPath,
startIndexOfPath + path.length(), 0);
}
사용
Utils.setFontSizeForPath(spannable, "big", (int) textView.getTextSize() + 20); // make "big" text bigger 20px than normal text
답변
spannableStringbuilder 사용해보십시오 . 이를 사용하여 여러 글꼴 크기로 문자열을 만들 수 있습니다.
답변
private SpannableStringBuilder SpannableStringBuilder(final String text, final char afterChar, final float reduceBy) {
RelativeSizeSpan smallSizeText = new RelativeSizeSpan(reduceBy);
SpannableStringBuilder ssBuilder = new SpannableStringBuilder(text);
ssBuilder.setSpan(
smallSizeText,
text.indexOf(afterChar),
text.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
return ssBuilder;
}
------------------------
TextView textView =view.findViewById(R.id.textview);
String s= "123456.24";
textView.setText(SpannableStringBuilder(s, '.', 0.7f));
—————- 결과 —————
결과 :
12345. 24
답변
이를 수행하는 가장 좋은 방법은 텍스트를 부분 문자열없이 완전히 다이너 미크하지 않은 HTML입니다. 예를 들면 다음과 같습니다.
public static String getTextSize(String text,int size) {
return "<span style=\"size:"+size+"\" >"+text+"</span>";
}
반면에 색상 속성 등을 사용할 수 있습니다.
size.setText(Html.fromHtml(getTextSize(ls.numProducts,100) + " " + mContext.getString(R.string.products));