一分钟实现TextView高亮效果BabushkaText
16lz
2021-01-24
Android程序员面试宝典
github : https://github.com/open-android/BabushkaText
项目总贴地址:https://github.com/open-android/Android
配套视频
http://www.toutiao.com/i6430367450730070530/
第一步. 在项目的根目录build.gradle添加依赖
allprojects { repositories { ...... maven { url "https://jitpack.io" } }}
第二步. 在Module的build.gradle添加依赖
compile 'com.github.open-android:EmphasisTextView:0.1.0'
第三步:初始化TextView:
第四步:实现上图效果,拷贝如下代码:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Display "9.5 excellent!" final BabushkaText babushka1 = (BabushkaText)findViewById(R.id.text); babushka1.addPiece(new BabushkaText.Piece.Builder(" 9.5 ") .backgroundColor(Color.parseColor("#073680")) .textColor(Color.WHITE) .build()); babushka1.addPiece(new BabushkaText.Piece.Builder(" excellent! ") .backgroundColor(Color.parseColor("#DFF1FE")) .textColor(Color.parseColor("#073680")) .style(Typeface.BOLD) .build()); babushka1.display(); // Display "3.4 horrible!" final BabushkaText babushka2 = (BabushkaText)findViewById(R.id.text2); babushka2.addPiece(new BabushkaText.Piece.Builder(" 3.4 ") .backgroundColor(Color.parseColor("#800736")) .textColor(Color.WHITE) .build()); babushka2.addPiece(new BabushkaText.Piece.Builder(" horrible! ") .backgroundColor(Color.parseColor("#fedfe2")) .textColor(Color.parseColor("#800736")) .style(Typeface.BOLD) .build()); babushka2.display(); // Display "starting at $420" BabushkaText babushka3 = (BabushkaText)findViewById(R.id.text3); babushka3.addPiece(new BabushkaText.Piece.Builder("starting at ") .textColor(Color.parseColor("#50AF2C")) .build()); babushka3.addPiece(new BabushkaText.Piece.Builder("$420!") .textColor(Color.parseColor("#50AF2C")) .textSizeRelative(1.2f) .style(Typeface.BOLD) .build()); babushka3.display(); // Display "nightly price" BabushkaText babushka4 = (BabushkaText)findViewById(R.id.text4); babushka4.addPiece(new BabushkaText.Piece.Builder("nightly price ") .textColor(Color.parseColor("#5F5F5F")) .superscript() .textSizeRelative(0.9f) .style(Typeface.BOLD) .build()); babushka4.addPiece(new BabushkaText.Piece.Builder("$256") .textColor(Color.parseColor("#5F5F5F")) .superscript() .strike() .textSizeRelative(0.9f) .style(Typeface.BOLD) .build()); babushka4.addPiece(new BabushkaText.Piece.Builder(" $179") .textColor(Color.parseColor("#9E0719")) .textSizeRelative(1.5f) .style(Typeface.BOLD) .build()); babushka4.display(); // Display "new York" BabushkaText babushka5 = (BabushkaText)findViewById(R.id.text5); babushka5.addPiece(new BabushkaText.Piece.Builder("New York, United States\n") .textColor(Color.parseColor("#414141")) .style(Typeface.BOLD) .build()); babushka5.addPiece(new BabushkaText.Piece.Builder("870 7th Av, New York, Ny\n") .textColor(Color.parseColor("#969696")) .textSizeRelative(0.9f) .style(Typeface.BOLD) .build()); babushka5.addPiece(new BabushkaText.Piece.Builder("10019, United States of America") .textColor(Color.parseColor("#969696")) .textSizeRelative(0.8f) .build()); babushka5.display(); // Display "Central Park" BabushkaText babushka6 = (BabushkaText)findViewById(R.id.text6); babushka6.addPiece(new BabushkaText.Piece.Builder("Central Park, NY\n") .textColor(Color.parseColor("#414141")) .build()); babushka6.addPiece(new BabushkaText.Piece.Builder("1.2 mi ") .textColor(Color.parseColor("#0081E2")) .textSizeRelative(0.9f) .build()); babushka6.addPiece(new BabushkaText.Piece.Builder("from here") .textColor(Color.parseColor("#969696")) .textSizeRelative(0.9f) .build()); babushka6.display(); // Display "Bryant Park Hotel" BabushkaText babushka7 = (BabushkaText)findViewById(R.id.text7); babushka7.addPiece(new BabushkaText.Piece.Builder("The Bryant Park Hotel\n") .textColor(Color.parseColor("#414141")) .build()); babushka7.addPiece(new BabushkaText.Piece.Builder("#6 of 434 ") .textColor(Color.parseColor("#0081E2")) .build()); babushka7.addPiece(new BabushkaText.Piece.Builder("in New York City\n") .textColor(Color.parseColor("#969696")) .build()); babushka7.addPiece(new BabushkaText.Piece.Builder("2487 reviews\n") .textColor(Color.parseColor("#969696")) .build()); babushka7.addPiece(new BabushkaText.Piece.Builder("$540") .textColor(Color.parseColor("#F7B53F")) .style(Typeface.BOLD) .build()); babushka7.addPiece(new BabushkaText.Piece.Builder(" per night") .textColor(Color.parseColor("#969696")) .build()); babushka7.display(); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { BabushkaText.Piece aPiece = babushka1.getPiece(0); aPiece.setText(" 9.9 "); babushka1.display(); } }); }}
支持的样式?
可以用下面的方法定制你的文字风格,其内部被转换成相应的spannables
Babushka Method | Internal Span |
---|---|
textSize | AbsoluteSizeSpan |
textColor | ForegroundColorSpan |
textSizeRelative | RelativeSizeSpan |
backgroundColor | BackgroundColorSpan |
style | StyleSpan |
underline | UnderlineSpan |
strike | StrikethroughSpan |
superscript | SuperscriptSpan |
subscript | SubscriptSpan |
我还能做什么?
一旦你创建和显示你的babushkatext,你可以修改每个单独文本呢内容。例如,如果我们想把上面例子中的“1.2个MI”改为‘1.9公里’,我们可以做以下操作:
// grab the Piece at position 1Piece piece = babushka.getPiece(1);// modify it's textpiece.setText("1.9 km ");// you must always call display after you alter a Piece's textbabushka.display();
欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频
微信公众号名称:Android干货程序员
更多相关文章
- GitHub 优秀的 Android(安卓)开源项目
- Android(安卓)开源组件和第三方库汇总
- Android小项目之底部导航(RadioButton&Fragment&ViewPager)
- Android(安卓)support 依赖升级到 androidx 转换问题
- Android----Google code android开源项目(四)
- android studio创建新项目color.xml文件错误
- Android(安卓)studio问题小记---Could not find com.android.sup
- Ubuntu14.04下最新Android(安卓)NDK安装
- android之switch控件的用法