앱 위젯에서 텍스트를 쉽게 칠 수있는 방법이 있습니까?
Android의 앱 위젯 내에서 텍스트를 공격하는 쉬운 방법이 있는지 궁금합니다. 일반적인 활동에서는 textview 플래그를 사용하는 것이 매우 쉽습니다.
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
그러나 앱 위젯에서 원격보기 만 사용할 수 있습니다 ... 이것이 가능한지 모르겠습니다.
누구든지 이것에 대해 알고 있습니까?
감사!
이것을 사용할 수 있습니다 :
remoteviews.setInt(R.id.YourTextView, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
물론 android.graphics.Paint 클래스에서 다른 플래그를 추가 할 수도 있습니다.
다른보기에서 테스트하지 않은 텍스트보기에서 프로그래밍 방식으로 수행하려면 >>
TextView tv = (TextView) findViewById(R.id.mytext);
tv.setText("This is strike-thru");
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
프로그래밍 방식으로 페인트 방식보다 해킹처럼 보이지 않는 또 다른 방법 :
대신에 :
tv.setText(s);
하다:
private static final StrikethroughSpan STRIKE_THROUGH_SPAN = new StrikethroughSpan();
...
tv.setText(s, TextView.BufferType.SPANNABLE);
Spannable spannable = (Spannable) tv.getText();
spannable.setSpan(STRIKE_THROUGH_SPAN, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
2015 업데이트 : 여러분, 이것은 매우 오래된 안드로이드 버전입니다. 최신 솔루션에 대한 다른 답변을 참조하십시오!
전체 텍스트보기를 취소하려면 특정 배경 이미지를 사용하여 취소 선 효과를 시뮬레이션 할 수 있습니다.
android:background="@drawable/bg_strikethrough"
를 Where bg_strikethrough
당김이 아무리 패딩 양쪽 성장, 중간을 통해 실선을 유지하는 9 패치, 당신이 합리적이라고 생각합니다. 나는 이것을 다음과 같이 사용했다 :
(명확성을 위해 확대 .. 1300 %!)
그것은 내 HDPI 버전이므로 (첫 번째 버전 http://i.stack.imgur.com/nt6BK.png ) 그대로 저장 res/drawable-hdpi/bg_strikethrough.9.png
하면 구성이 다음과 같이 작동합니다.
이를 위해 이것을 사용할 수 있습니다
title.setPaintFlags(title.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
그리고 제거를 위해 이것을 사용할 수 있습니다
title.setPaintFlags(title.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
단어가 하나라도 있으면 드로어 블을 사용할 수 있습니다. 다음은 예입니다.
<item android:state_pressed="false"><shape android:shape="line">
<stroke android:width="2dp" android:color="#ffffff" />
</shape>
</item>
여러 줄이있는 경우 다음 코드를 사용할 수 있습니다.
TextView someTextView = (TextView) findViewById(R.id.some_text_view);
someTextView.setText(someString);
someTextView.setPaintFlags(someTextView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG)
여러 줄로 된 TextView의 경우 다음과 같이 android.text.style.CharacterStyle을 사용해야합니다.
SpannableString spannable = new SpannableString(text);
spannable.setSpan(new StrikethroughSpan(), 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
remoteViews.setTextViewText(R.id.itemText, spannable);
문자열을 사용하면 정말 쉽습니다.
<string name="line"> Not crossed <strike> crossed </strike> </string>
그리고 그냥 :
<TextView
...
android:text="@string/line"
/>
아래 줄을 추가하십시오 :-
TextView tv=(TextView) v.findViewById(android.R.id.text1);
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
"tv"대신 참조를 사용하십시오
이 코드를 사용해보십시오
textview.setText((Html.fromHtml("<strike>hello world!</strike>")));
Here is an extension for all you Kotlin folks
fun TextView.showStrikeThrough(show: Boolean) {
paintFlags =
if (show) paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
else paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
}
Usage
textView.showStrikeThrough(true)
Limitation
Strikethroughs can only be the same color as the text
(i.e. Red text and blue strikethrough is not possible)
create a drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape android:shape="line">
<stroke android:width="1dp"
android:color="@color/onePlusRed" />
</shape>
</item>
</selector>
and use it as foreground.
android:foreground="@drawable/strike_through"
I tried few options but, this works best for me:
String text = "<strike><font color=\'#757575\'>Some text</font></strike>";
textview.setText(Html.fromHtml(text));
cheers
you add in :
TextView variableTv = (TextView) findViewById(R.id.yourText);
you set/add in You variable :
variableTv.setText("It's Text use Style Strike");
and then add .setPaintFlags in variableTv :
variableTv.setPaintFlags(variableTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
I know, I am answering an old question, it might be helpful for someone else, for striking out a particular portion of TextView programmatically.
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("Text need to be set here", TextView.BufferType.SPANNABLE);
Spannable spannable = (Spannable) textView.getText();
spannable.setSpan(new StrikethroughSpan(), 5, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
So, in this example code, 5 is starting position and 8 is ending position of text need to be stricken out, so after running this code we can get the text "need" with striked out. Hope it will helpful for someone else.
Android resources have pretty good HTML markup support
The below HTML elements are supported:
Bold: <b>, <em>
Italic: <i>, <cite>, <dfn>
25% larger text: <big>
20% smaller text: <small>
Setting font properties: <font face=”font_family“ color=”hex_color”>. Examples of possible font families include monospace, serif, and sans_serif.
Setting a monospace font family: <tt>
Strikethrough: <s>, <strike>, <del>
Underline: <u>
Superscript: <sup>
Subscript: <sub>
Bullet points: <ul>, <li>
Line breaks: <br>
Division: <div>
CSS style: <span style=”color|background_color|text-decoration”>
Paragraphs: <p dir=”rtl | ltr” style=”…”>
그러나 안드로이드 스튜디오 레이아웃 미리보기에서는 렌더링되지 않습니다. Android Studio 3.3.1에서 마지막으로 테스트
예를 들어 취소 선은 다음과 같습니다.
<string name="cost"><strike>$10</strike> $5 a month</string>
나는 이것을 일반 (local) TextView
에서 수행했으며, 문서는 두 가지 방법으로 메소드를 나열하기 때문에 원격 다양성에서 작동해야합니다.
remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));
'Programing' 카테고리의 다른 글
우분투에서 Oracle Java를 기본 Java로 설정하는 방법은 무엇입니까? (0) | 2020.06.29 |
---|---|
ViewPager에서 스크롤을 비활성화 할 수 있습니까? (0) | 2020.06.29 |
Android의 EditText보기 안에 아이콘을 추가하는 방법은 무엇입니까? (0) | 2020.06.29 |
반응 형 높이로 div 내부의 이미지를 세로로 정렬 (0) | 2020.06.29 |
Amazon Route53에서 DNS 기반 URL 전달 설정 (0) | 2020.06.29 |