Android实现可以展开的TextView
2017-11-22 10:10
701 查看
本文实例为大家分享了一个可以展开的TextView的具体代码,供大家参考,具体内容如下
原理是通过点击的时候设置 setMaxLines(lineNum)来实现:
public class ExpandableTextView extends TextView { private static int MIN_LINE_NUM = 2; private static int MAX_LINE_NUM = 20; private int lineNum = MIN_LINE_NUM; private boolean mIsExpanded = false; Bitmap bitmapDown; Bitmap bitmapUp; int w, h; /** 点击事件listener */ private OnClickListener mOnClickListener; public ExpandableTextView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } private void init(Context context, AttributeSet attrs) { setMaxLines(lineNum); bitmapDown = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_down); bitmapUp = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_up); w = bitmapDown.getWidth() + (int) context.getResources().getDimension(R.dimen.expand_textview_right); h = bitmapDown.getHeight() + (int) context.getResources().getDimension(R.dimen.expand_textview_bottom); super.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (lineNum == MIN_LINE_NUM) { lineNum = MAX_LINE_NUM; setMaxLines(lineNum); } else { lineNum = MIN_LINE_NUM; setMaxLines(lineNum); } if (mOnClickListener != null) { mOnClickListener.onClick(v); } } }); } @Override public void setOnClickListener(OnClickListener listener) { if (!isClickable()) { setClickable(true); } mOnClickListener = listener; } @Override public void setMaxLines(int maxlines) { super.setMaxLines(maxlines); if (lineNum == MAX_LINE_NUM) { mIsExpanded = true; } else { mIsExpanded = false; } } public boolean isExpanded() { return mIsExpanded; } @Override protected void onDraw(Canvas canvas) { if (getLineCount() <= MIN_LINE_NUM) { super.onDraw(canvas); return; } if (lineNum == MIN_LINE_NUM) { canvas.drawBitmap(bitmapDown, getWidth() - w, getHeight() - h, null); } else { canvas.drawBitmap(bitmapUp, getWidth() - w, getHeight() - h, null); } super.onDraw(canvas); } public void setMaxLine(int line) { lineNum = line; setMaxLines(line); } }
这样来写Layout:
<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:background="#FFFFFF" > <TextView android:id="@+id/detail_action" android:textColor="#000000" android:textSize="11sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginRight="8dip" android:drawablePadding="4dip" android:paddingBottom="10dip" android:paddingTop="10dip" android:singleLine="true" android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" /> <com.example.view.ExpandableTextView android:id="@+id/textview" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_below="@id/detail_action" android:lineSpacingExtra="4dip" android:paddingBottom="-40dip" android:paddingRight="48dip" android:text="adfsfsfewrwerwerwerqRWgdffdfdfERSAFSDFSDFSDd" android:layout_marginTop="-5dip" android:textColor="#000000" > </com.example.view.ExpandableTextView> <TextView android:id="@+id/detail_action1" android:textColor="#000000" android:textSize="11sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textview" android:layout_marginRight="8dip" android:drawablePadding="4dip" android:paddingBottom="10dip" android:paddingTop="10dip" android:singleLine="true" android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" /> </RelativeLayout>
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- android TextView 文本内容收起,展开的效果实现
- android如果重写onDraw实现一个类似TextView可以显示表情和链接的控件(一)
- Android中TextView不获取焦点可以实现跑马灯的效果
- android Textview 实现展开收缩功能+部分文字点击 (SpannableString)
- Android实现可点击展开的TextView
- android Textview 实现展开收缩功能(字符宽度)(StaticLayout)
- Android:TextView不获取焦点可以实现跑马灯的效果
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- Android中SpannableString学习以及实现自定义TextView的显示更多(展开)和收起功能
- android 实现可以放大缩小的TextView
- android ExpandableTextView-自定义可以动态展开/收缩显示长文本的TextView
- android如果重写onDraw实现一个类似TextView可以显示表情和链接的控件(二)
- Android TextView实现多文本折叠、展开效果
- android ExpandableTextView-自定义可以动态展开/收缩显示长文本的TextView
- android 中使用AutoCompleteTextView 可以实现自动提示功能
- Android中TextView不获取焦点可以实现跑马灯的效果
- Android自定义控件之自定义TextView,实现drawableLeft可以和文字一起居中
- Android TextView实现点击展开动画效果
- Android中TextView不获取焦点可以实现跑马灯的效果
- 教你实现一个具备展开折叠功能的TextView(个人感觉github上的内容不错!https://github.com/r17171709/android_demo)