Android自定义TextView仿微信朋友圈文字展开全文功能

 更新时间:2018年06月02日 12:39:21   作者:CommyTin  
这篇文章主要为大家详细介绍了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 处理空列表的方法(必看篇)

    Android 处理空列表的方法(必看篇)

    下面小编就为大家带来一篇Android 处理空列表的方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 一文带你了解Android Flutter中Transform的使用

    一文带你了解Android Flutter中Transform的使用

    flutter的强大之处在于,可以对所有的widget进行Transform,因此可以做出非常酷炫的效果。本文就来大家了解一下Transform的具体使用,感兴趣的可以了解一下
    2023-01-01
  • Android中shape的自定义艺术效果使用

    Android中shape的自定义艺术效果使用

    大家好,本篇文章主要讲的是Android中shape的自定义艺术效果使用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Android自定义控件实现圆形进度CircleProgressBar

    Android自定义控件实现圆形进度CircleProgressBar

    这篇文章主要为大家详细介绍了Android自定义控件实现圆形进度CircleProgressBar,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Android编程之PopupWindow隐藏及显示方法示例(showAtLocation,showAsDropDown)

    Android编程之PopupWindow隐藏及显示方法示例(showAtLocation,showAsDropDown

    这篇文章主要介绍了Android编程之PopupWindow隐藏及显示方法,结合实例形式分析了showAtLocation及showAsDropDown方法实现PopupWindow控件隐藏及显示功能相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • Android MVP模式实战教程

    Android MVP模式实战教程

    这篇文章主要为大家详细介绍了Android MVP模式实战教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 解决Android加壳过程中mprotect调用失败的原因分析

    解决Android加壳过程中mprotect调用失败的原因分析

    本文探讨的主要内容是mprotect调用失败的根本原因,以及在加壳实现中的解决方案,通过本文的阐述,一方面能够帮助遇到同类问题的小伙伴解决心中的疑惑,另一方面能够给大家提供可落地的实现方案,需要的朋友可以参考下
    2022-01-01
  • Android canvas drawBitmap方法详解及实例

    Android canvas drawBitmap方法详解及实例

    这篇文章主要介绍了 Android canvas drawBitmap方法详解及实例的相关资料,需要的朋友可以参考下
    2017-01-01
  • 解决Android解析图片的OOM问题的方法!!!

    解决Android解析图片的OOM问题的方法!!!

    我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。本篇文章主要讲诉了解决Android解析图片的OOM问题,有兴趣的可以了解一下。
    2016-11-11
  • Android N 7.0中报错:android.os.FileUriExposedException的解决方法

    Android N 7.0中报错:android.os.FileUriExposedException的解决方法

    这篇文章主要给大家介绍了关于在Android N 7.0中报错:android.os.FileUriExposedException的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-05-05

最新评论