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的问题
    }
  • 相关阅读:
    iOS uiscrollView 嵌套 问题 的解决
    NSURLConnection 网络超时的那些事(转别人整理的)
    IOS 开发中判断NSString是否为空字符
    iOS- SQLite3的基本使用
    怎么应对 domino文档损坏然后损坏文档别删除导致数据丢失
    为什么Log.nsf中存储的日志只有最近7天的原因
    Struts,Spring,Hibernate优缺点
    Java面试之List的三个子类ArrayList,LinkedList,Vector区别
    Java面试之同步/异步/阻塞/非阻塞/BIO/NIO/AIO
    如何设置 Windows 开机启动项
  • 原文地址:https://www.cnblogs.com/qq278360339/p/4010787.html
Copyright © 2011-2022 走看看