如何找出是否TextView包含SpannableStringBuilder而不是纯文本?我需要更改 的文本大小TextView,但如果它包含纯文本或跨度,则不同。
TextView textView1;
textView1.setText("BlahBlahBlah");
TextView textView2;
final SpannableStringBuilder sb = new SpannableStringBuilder(title);
final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(255,255,255));
sb.setSpan(fcs, bookname.length(),title.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView2.setText(sb);
Run Code Online (Sandbox Code Playgroud)
现在我需要一个这样的方法:textView1.hasSpans()
在我的Android应用程序的textview中,如果URL的长度大于某个限制,我想省略所有URL(已经使用可点击范围链接)以获得省略号(或截断).
这种行为的灵感来自twitter和facebook.
例如,链接http://www.getfluttr.com/flap/3rL7/now-only-if-modi-would-listen-to-opposition-party-/它应该如下所示:
我知道这必须涉及跨度.我似乎无法找到一个允许我在保持链接的同时替换文本的跨度.
如果可以将SpannableString设置为片段的参数,怎么办?
Bundle args = new Bundle();
args.putString(PagesFragment.ARG_SECTION_NUMBER, Page[position]);
fragment.setArguments(args);
return fragment;
Run Code Online (Sandbox Code Playgroud)
在此示例代码中需要更改什么?
import static android.text.TextUtils.join;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
TextView testText;
TextView testText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
testText = (TextView) findViewById(R.id.text1);
testText2 = (TextView) findViewById(R.id.text2);
List<SpannableString> refinements = new ArrayList<>();
refinements.add(getFilterWithIcon("100", R.drawable.ic_feature_bed_s));
refinements.add(new SpannableString("Testing text"));
//Text without icon
testText.setText(join(" | ", refinements));
//Text with icon
testText2.setText(getFilterWithIcon("100", R.drawable.ic_feature_bed_s));
}
private SpannableString getFilterWithIcon(String stringValue, int icon) {
Drawable …Run Code Online (Sandbox Code Playgroud) 我需要为 TextView 中的文本使用自定义下划线。我使用 ReplacementSpan 来做到这一点。但它会在第一行的末尾剪切文本。
这是我的CustomUnderlineSpan课:
public class CustomUnderlineSpan extends ReplacementSpan {
private int underlineColor;
private int textColor;
public CustomUnderlineSpan(int underlineColor, int textColor) {
super();
this.underlineColor = underlineColor;
this.textColor = textColor;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
paint.setStrokeWidth(3F);
paint.setColor(textColor);
canvas.drawText(text, start, end, x, y, paint);
paint.setColor(underlineColor);
int length = (int) paint.measureText(text.subSequence(start, end).toString());
canvas.drawLine(x, bottom, length + x, bottom, paint);
}
@Override …Run Code Online (Sandbox Code Playgroud)