Android自定义TextView仿微信朋友圈文字展开全文功能
Android自定义TextView仿微信朋友圈文字信息,展开全文功能
代码及注释如下:
首先写一个xml文件 showmore.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:maxLines="3" android:ellipsize="end"/> <TextView android:id="@+id/hide_show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_showmore" android:textColor="@color/colorBlue" android:textSize="16sp" android:text="显示更多" android:padding="0dp" /> </LinearLayout>
//新建java类继承自LinearLayout public class ShowMoreTextView extends LinearLayout { // 用来标记是否为展开状态 private int hideOrShow = 0; private TextView textView; private TextView button; public ShowMoreTextView(Context context) { super(context); } public ShowMoreTextView(Context context, AttributeSet attrs) { super(context, attrs); // 实例化layoutInflater对象,获取到布局填充服务 LayoutInflater layoutInflater = (LayoutInflater)context. getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 填充自定义的布局xml文件 layoutInflater.inflate(R.layout.showmore,this); textView = (TextView)findViewById(R.id.content); button=(TextView) findViewById(R.id.hide_show); button.setText("显示更多"); // 隐藏或显示 hideOrShow(); } // 创建setContent方法为TextView填充内容 public void setContent(String content) { textView.setText(content); } public void hideOrShow() { button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //由hideOrShow的值确定按钮和textview的状态 if (hideOrShow == 0) { button.setText("收起"); textView.setMaxLines(100); hideOrShow = 2; }else if(hideOrShow==2){ button.setText("显示更多"); textView.setMaxLines(3); hideOrShow = 1; }else if(hideOrShow==1){ button.setText("收起"); textView.setMaxLines(100); hideOrShow=2; } } }); } }
接下来就可以引用了,与普通的控件一样 activity_test.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.commy.activity.TestActivity"> <com.yunfeng.laojiahenan.view.ShowMoreTextView android:id="@+id/showmore" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout>
测试类:
public class TestActivity extends AppCompatActivity { private ShowMoreTextView showMoreTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); showMoreTextView=(ShowMoreTextView)findViewById(R.id.showmore); showMoreTextView.setContent(" There is so much life I've left to live And this fire's burning still When I watch you look at me I think I could find a way To stand for every dream And forsake this solid ground And give up this fear within Of what would happen if they end you I'm in love with you "); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
一文带你了解Android Flutter中Transform的使用
flutter的强大之处在于,可以对所有的widget进行Transform,因此可以做出非常酷炫的效果。本文就来大家了解一下Transform的具体使用,感兴趣的可以了解一下2023-01-01Android自定义控件实现圆形进度CircleProgressBar
这篇文章主要为大家详细介绍了Android自定义控件实现圆形进度CircleProgressBar,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2020-05-05Android编程之PopupWindow隐藏及显示方法示例(showAtLocation,showAsDropDown
这篇文章主要介绍了Android编程之PopupWindow隐藏及显示方法,结合实例形式分析了showAtLocation及showAsDropDown方法实现PopupWindow控件隐藏及显示功能相关操作技巧,需要的朋友可以参考下2017-02-02解决Android加壳过程中mprotect调用失败的原因分析
本文探讨的主要内容是mprotect调用失败的根本原因,以及在加壳实现中的解决方案,通过本文的阐述,一方面能够帮助遇到同类问题的小伙伴解决心中的疑惑,另一方面能够给大家提供可落地的实现方案,需要的朋友可以参考下2022-01-01Android canvas drawBitmap方法详解及实例
这篇文章主要介绍了 Android canvas drawBitmap方法详解及实例的相关资料,需要的朋友可以参考下2017-01-01Android N 7.0中报错:android.os.FileUriExposedException的解决方法
这篇文章主要给大家介绍了关于在Android N 7.0中报错:android.os.FileUriExposedException的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧2018-05-05
最新评论