zoukankan      html  css  js  c++  java
  • 可收缩的TextView

    <?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"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin" >
    
        <!-- android 简单的两步实现Play上的文本伸缩功能 -->
        <!-- http://www.cnblogs.com/TerryBlog/archive/2013/03/12/2956165.html -->
        <FrameLayout
            android:id="@+id/expandable_container"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginBottom="@dimen/linear_margin_bigger" >
    
            <TextView
                android:id="@+id/expandable_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clickable="true"
                android:ellipsize="end"
                android:text="@string/loremipsum" />
        </FrameLayout>
    
        <!-- my method -->
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
    
            <TextView
                android:id="@+id/myexpandable_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:maxLines="3"
                android:clickable="true"
                android:ellipsize="end"
                android:text="@string/loremipsum" />
        </FrameLayout>
    
    </LinearLayout>
    package com.lxh.textview;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.TextView;
    
    import com.example.com.lxh.pro1.R;
    
    /**
     * android 简单的两步实现Play上的文本伸缩功能
     * http://www.cnblogs.com/TerryBlog/archive/2013/03/12/2956165.html
     * @author lxh
     */
    public class ExpandableTV extends Activity {
        // -------------------------- Terry's method --------------------------
        private boolean isExpanded = false, myIsExpanded = false;
        private int lastHeight = 0;
        private ViewGroup expandableContainer;
        private TextView textView, myTextView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_expandable_tv);
            expandableContainer = (ViewGroup) findViewById(R.id.expandable_container);
            textView = (TextView) findViewById(R.id.expandable_text);
            textView.setOnClickListener(terryClickListener);
            myTextView = (TextView) findViewById(R.id.myexpandable_text);
            myTextView.setOnClickListener(myClickListener);
        }
        
        private OnClickListener terryClickListener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isExpanded) {
                    LayoutParams params = (LayoutParams) expandableContainer.getLayoutParams();
                    params.height = lastHeight;
                    expandableContainer.setLayoutParams(params);
                    expandableContainer.invalidate(); //调用OnDraw方法
                } else {
                    lastHeight = expandableContainer.getHeight();
                    LayoutParams params = (LayoutParams) expandableContainer.getLayoutParams();
                    params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
                    expandableContainer.setLayoutParams(params);
                    expandableContainer.invalidate(); //调用OnDraw方法
                }
                isExpanded = !isExpanded;
            }
        };
        //Terry总结:此方法缺陷,当给出最大高度不合适时,字会显示一半高度
    
        // -------------------------- my method --------------------------
        private OnClickListener myClickListener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (myIsExpanded) {
                    myTextView.setMaxLines(3);
                    expandableContainer.invalidate(); //调用OnDraw方法
                } else {
                    myTextView.setMaxLines(Integer.MAX_VALUE);
                    expandableContainer.invalidate(); //调用OnDraw方法
                }
                myIsExpanded = !myIsExpanded;
            }
        };
        //Me总结:此方法不存在Terry的问题
    }
  • 相关阅读:
    XML之四种解析dom,sax,jdom,dom4j原理及性能比较
    uni-app 下小程序bindgetuserinfo不回调原因
    微信小程序 -- 真机不打开调试无法正常使用小程序的坑
    如何申请腾讯位置服务的密钥
    使用Promise封装小程序wx.request的实现方法
    关于vue-router当中addRoutes的使用
    前端Promise总结笔记
    css怎么设置超出几行显示省略号?
    大数据Spark和Hadoop以及区别(干货)
    Spark和Hadoop的区别和比较
  • 原文地址:https://www.cnblogs.com/qq278360339/p/4010787.html
Copyright © 2011-2022 走看看