美文网首页
实现与ListView相似点击收缩展开内容

实现与ListView相似点击收缩展开内容

作者: Poison丶Carson | 来源:发表于2017-09-25 10:22 被阅读0次

    有的时候,根据项目的需求不同,我们会需要实现一个类似于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

    相关文章

      网友评论

          本文标题:实现与ListView相似点击收缩展开内容

          本文链接:https://www.haomeiwen.com/subject/smurextx.html