(这篇里的还是太简陋,基本不可直接用于项目。已经写好一个单独封装的,可以适应多种环境的控件,个人感觉十分简单好用,敬请期待)
在做的项目需要这个功能。而且是挺常用的一个功能。
需求是有一个评论列表,太多时要隐藏,然后点击展开更多按钮就可以显示全文。
思路就是可以弄俩TextView,一个MaxLine为n,一个不限制,然后再弄个按钮控制两个TextView交替显示。
有了思路马上动手,然后发现这个效果真是很简单就实现了。。效果图
好了,废话不多说,上代码。讲解不会很多,因为实在太简单了。。。
<?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=".MainActivity"> <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="2" /> <Button android:id="@+id/btn_showmore" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text1" android:text="show more" /> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> <Button android:id="@+id/btn_hidden" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/text2" android:text="hidden" android:visibility="gone" /> </RelativeLayout>
package com.example.csonezp.showmoredemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { String text = "据报道,男子沃纳事发时与兄长在巴塔克兰剧院内欣赏演唱会,枪手突然闯入乱枪扫射,当时枪手站在沃纳的兄长身后,并命令沃纳把会场其中一扇门关上。沃纳忆述当时自己双手合十,直视枪手双眼说:“不,因为我兄弟还在里面。”枪手让沃纳的兄长和他离开,随即便把门关上,兄弟二人和其余50名观众通过会场的通风区域逃走。"; @Bind(R.id.text1) TextView textView1; @Bind(R.id.text2) TextView textView2; @Bind(R.id.btn_showmore) Button btn_showmore; @Bind(R.id.btn_hidden) Button btn_hidden; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); textView1.setText(text); textView2.setText(text); } @OnClick(R.id.btn_showmore) public void showMore() { textView1.setVisibility(View.GONE); btn_showmore.setVisibility(View.GONE); textView2.setVisibility(View.VISIBLE); btn_hidden.setVisibility(View.VISIBLE); } @OnClick(R.id.btn_hidden) public void hidden() { textView1.setVisibility(View.VISIBLE); btn_showmore.setVisibility(View.VISIBLE); textView2.setVisibility(View.GONE); btn_hidden.setVisibility(View.GONE); } }
代码中用到了butterknife这个注入工具,个人感觉蛮好用的,能节省不少开发时间。
希望能帮到大家。
csonezp@gmail.com