`
艳过留痕
  • 浏览: 40341 次
社区版块
存档分类

Android编程之仿微信显示更多文字的View (带源码)

 
阅读更多

引用:http://blog.csdn.net/xyz_fly/article/details/9146395#comments

 

微信朋友圈中,如果好友发表的文字过长,会自动收缩起来,底下有提示,当点击“显示更多”时才会展开。

 

首先定义布局文件(很简单,不解释):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/desc_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4.0dip"
        android:gravity="center_vertical"
        android:textColor="#ff000000"
        android:textSize="14.0dip" />

    <TextView
        android:id="@+id/desc_op_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4.0dip"
        android:gravity="center"
        android:singleLine="true"
        android:textColor="#ff576b95"
        android:textSize="14.0dip"
        android:visibility="gone" />

</LinearLayout>

 文字:

    <string name="desc_shrinkup">收起</string>
    <string name="desc_spread">显示更多</string>

 

public class CollapsibleTextView extends LinearLayout implements
        OnClickListener {

    /** default text show max lines */
    private static final int DEFAULT_MAX_LINE_COUNT = 2;

    private static final int COLLAPSIBLE_STATE_NONE = 0;
    private static final int COLLAPSIBLE_STATE_SHRINKUP = 1;
    private static final int COLLAPSIBLE_STATE_SPREAD = 2;

    private TextView desc;
    private TextView descOp;

    private String shrinkup;
    private String spread;
    private int mState;
    private boolean flag;

    public CollapsibleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        shrinkup = context.getString(R.string.desc_shrinkup);
        spread = context.getString(R.string.desc_spread);
        View view = inflate(context, R.layout.collapsible_textview, this);
        view.setPadding(0, -1, 0, 0);
        desc = (TextView) view.findViewById(R.id.desc_tv);
        descOp = (TextView) view.findViewById(R.id.desc_op_tv);
        descOp.setOnClickListener(this);
    }

    public CollapsibleTextView(Context context) {
        this(context, null);
    }

    public final void setDesc(CharSequence charSequence, BufferType bufferType) { 
desc.setText(charSequence, bufferType); 
mState = COLLAPSIBLE_STATE_SPREAD; 
flag = false;
requestLayout(); 
} @Override public void onClick(View v) { flag = false; requestLayout(); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (!flag) { flag = true; if (desc.getLineCount() <= DEFAULT_MAX_LINE_COUNT) { mState = COLLAPSIBLE_STATE_NONE; descOp.setVisibility(View.GONE); desc.setMaxLines(DEFAULT_MAX_LINE_COUNT + 1); } else { post(new InnerRunnable()); } } } class InnerRunnable implements Runnable { @Override public void run() { if (mState == COLLAPSIBLE_STATE_SPREAD) { desc.setMaxLines(DEFAULT_MAX_LINE_COUNT); descOp.setVisibility(View.VISIBLE); descOp.setText(spread); mState = COLLAPSIBLE_STATE_SHRINKUP; } else if (mState == COLLAPSIBLE_STATE_SHRINKUP) { desc.setMaxLines(Integer.MAX_VALUE); descOp.setVisibility(View.VISIBLE); descOp.setText(shrinkup); mState = COLLAPSIBLE_STATE_SPREAD; } } } }

 效果图:



  



 

源码:

ZTESTTextView.zip

 引用:http://blog.csdn.net/xyz_fly/article/details/9146395#comments

  • 大小: 7.8 KB
  • 描述: http://dl2.iteye.com/upload/attachment/0099/2373/6147feef-ba91-3681-ae1c-7d8333bac272.jpg
  • 大小: 11.4 KB
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    Android高仿微信源码

    9. **多线程与异步处理**:网络请求和大数据处理通常在后台线程进行,以避免阻塞主线程,源码可能使用AsyncTask、Handler、Thread或更现代的RxJava、Coroutines进行异步编程。 10. **模块化设计**:大型项目通常...

    Android 仿微信UI源码

    总的来说,"Android 仿微信UI源码"是一个涵盖Android UI设计、网络请求、数据存储、权限管理等多方面知识的综合实例。通过深入研究并实践这份源码,开发者可以提升自己的Android开发技能,更好地理解和掌握Android...

    Android仿微信应用源码

    例如,顶部的导航栏可能需要自定义ToolBar,底部TabBar可以使用FragmentPagerAdapte配合TabLayout实现,而聊天界面则需要实现ListView或RecyclerView来显示消息列表,并且要处理好滑动刷新和下拉加载更多等功能。...

    Android应用源码之高仿微信.rar

    在本资源"Android应用源码之高仿微信.rar"中,我们可以深入学习和研究如何在Android平台上构建一个类似微信的应用程序。源代码提供了完整的实现,包括界面设计、功能模块和交互逻辑,对于Android开发者来说是一份...

    仿微信界面应用源码

    【标题】:“仿微信界面应用源码...总之,“仿微信界面应用源码”是一个全面学习和实践Android UI设计与开发的宝贵资源,无论你是初学者还是经验丰富的开发者,都能从中获取到有价值的知识和技巧,提升自己的开发能力。

    Android应用源码高仿安卓微信UI项目.zip

    这个“Android应用源码高仿安卓微信UI项目”是一个基于Java编程语言的开源项目,旨在模仿和实现微信的用户界面(UI)设计。通过研究这个项目,开发者可以深入理解如何在Android平台上构建类似微信的复杂交互和视觉...

    Android应用源码之高仿微信.zip

    总的来说,《Android应用源码之高仿微信》涵盖了Android应用开发的多个方面,从UI设计到功能实现,再到数据管理和网络通信,都是学习和提升Android开发技能的好材料。通过对源码的分析和学习,开发者可以深入了解...

    安卓Android源码——高仿安卓微信UI项目.zip

    总之,这个"安卓Android源码——高仿安卓微信UI项目.zip"涵盖了Android开发中的诸多关键知识点,包括UI设计、事件处理、数据存储、图片加载和多线程等。通过深入研究和实践,开发者不仅可以提升自己的编程技巧,还能...

    Android高级应用源码-HorizontalListView仿微信发起群聊.rar

    总的来说,"Android高级应用源码-HorizontalListView仿微信发起群聊"是一个很好的学习资源,涵盖了自定义View、事件处理、数据绑定、布局管理等多个Android开发的重要知识点,值得开发者深入研究。

    安卓Android源码——精典源码之高仿微信.zip

    "安卓Android源码——精典源码之高仿微信.zip" 这个标题揭示了我们要探讨的主题是关于Android平台上的一个开源项目,它的目标是模仿微信的应用界面和功能。这个项目可能是为了教学目的,或者是开发者研究微信交互...

    Android 完美高仿的微信源码.zip

    源码中可能包含了自定义的输入框、表情选择器、滑动加载更多视图等,这些都是微信为了优化交互体验而定制的组件。 4. 网络请求部分,开发者通常会使用如Retrofit、Volley或OkHttp等库进行网络通信。微信源码中会...

    Android高仿 微信朋友圈动态,动态GridView条目布局

    例如,一个用于展示图片,另一个用于显示纯文本,可能还有更多类型用于视频或者其他复杂结构。每个布局文件应包含对应类型的UI元素。 4. 视图复用:为了优化性能, GridView和ListView都依赖于视图复用机制。在`...

    Android应用源码之高仿微信5.2内测版UI项目.zip

    这个压缩包文件“Android应用源码之高仿微信5.2内测版UI项目.zip”包含了一个Android应用的源码,其目标是模仿微信5.2内测版本的用户界面设计。通过分析这个项目,我们可以深入理解Android UI开发、布局管理、自定义...

    仿微信源码

    【标题】"仿微信源码"所涉及的知识点主要集中在移动应用开发领域,特别是针对Android平台,因为通常 APK 文件是 Android 应用程序的打包格式。这个项目旨在创建一个类似于微信的应用程序,它包含了基本的微信功能,...

    Android 完美高仿的微信源码.rar

    8. **用户界面设计**:源码中包含了自定义View和Adapter的使用,展示了如何创建与微信类似的用户界面元素,如滑动刷新、下拉加载更多等。 9. **图片加载库**:为了优化图片的加载和显示,源码可能使用了Glide、...

    Android 完美高仿的微信源码.zip源码资源下载

    在本资源中,我们得到了一个名为"Android 完美高仿的微信源码.zip"的压缩包,这是一份用于学习和研究的Android应用程序源代码,旨在模仿微信的应用功能和用户体验。这个项目主要使用Java语言编写,同时也可能涉及到...

    Android应用源码之仿微信标题栏右上角PopupWindow.zip

    本项目“Android应用源码之仿微信标题栏右上角PopupWindow”旨在实现一个与微信应用类似的标题栏功能,特别是在右上角的下拉PopupWindow效果。这个功能通常用于展示更多的操作选项或者设置,增强了用户体验。 首先...

    android即时通讯之仿微信 附源码

    1. **Android UI设计**:微信的用户界面设计是其成功的关键因素之一。你需要了解并运用Android的布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout等)来创建聊天界面、联系人列表、朋友圈展示页等。...

    android 微信 布局 源码

    通过分析和实现微信的源码,开发者不仅能学习到Android布局设计的技巧,还能深入理解Android应用开发的各种技术,包括数据持久化、网络请求、多线程、权限管理等方面的知识。同时,这也是一种提高自己编程能力、解决...

Global site tag (gtag.js) - Google Analytics