实现与ListView相似点击收缩展开内容
2017-09-25 本文已影响0人
Poison丶Carson
点击展开 点击收缩有的时候,根据项目的需求不同,我们会需要实现一个类似于ListView的点击收缩、点击展开,改变显示内容以及更改点击之后的字体
其实需要实现这类的效果并不是很难,首先我们需要在XML布局中设置两个TextView,一个用于显示配送费的信息,一个用于显示我们点击之后的响应效果
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text_freigh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:ellipsize="middle"
android:maxLines="1"
android:singleLine="false"
tools:text="可收缩隐藏的配送范围信息"/>
<TextView
android:id="@+id/text_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginRight="34dp"
android:gravity="center"
android:text="更多"
android:textColor="#999"
android:textSize="13sp"/>
</LinearLayout>
布局很简单,只是显示配送费信息的时候设置最大显示为1行,其他的根据开发的实际情况进行调整就可以了,接下来我们需要在Activity中进行设置
public class MessageActivity extend Activity implements View.OnClickListener{
// 默认展示最大行数1行
private static final int VIDEO_CONTENT_DESC_MAX_LINE = 1;
// 收起状态
private static final int SHRINK_UP_STATE = 1;
// 展开状态
private static final int SPREAD_STATE = 2;
//默认为收起状态
private static int mState = SHRINK_UP_STATE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.message);
binding.executePendingBindings();
binding.textContent.setOnClickListener(this);
}
@Override
public void onClick(View v){
switch (v.getId()) {
case R.id.text_content:
if (mState == SPREAD_STATE){
binding.textFreigh.setMaxLines(VIDEO_CONTENT_DESC_MAX_LINE);
binding.textFreigh.requestLayout();
mState = SHRINK_UP_STATE;
binding.textContent.setText("更多");
}else if(mState == SHRINK_UP_STATE){
binding.textFreigh.setMaxLines(Integer.MAX_VALUE);
binding.textFreigh.requestLayout();
mState = SPREAD_STATE;
binding.textContent.setText("收起");
}
break;
default:
break;
}
}
}
很简单的几行代码,就将我们需要的效果完美实现了n(≧▽≦)n