欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android流式布局实现历史搜索记录功能

程序员文章站 2023-11-17 09:29:22
最近在开发项目的时候,有一个需求是展示历史搜索记录 ,展示的样式是流式布局(就是根据内容自动换行)。在网上看到了一个不错的类库跟大家分享一下 首先在androidstud...

最近在开发项目的时候,有一个需求是展示历史搜索记录 ,展示的样式是流式布局(就是根据内容自动换行)。在网上看到了一个不错的类库跟大家分享一下

首先在androidstudio简历一个工程项目导入module类库,我会把项目demo方法github上

说一下demo中的实现方式

在 activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <edittext
    android:id="@+id/edt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
  <button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="确定" />
  <scrollview
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.zhy.view.flowlayout.tagflowlayout
      android:id="@+id/id_flowlayout"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      app:max_select="-1" />
  </scrollview>
</linearlayout>

实现模拟搜索效果图

Android流式布局实现历史搜索记录功能

mainactivity.java 代码

public class mainactivity extends appcompatactivity {
  private tagflowlayout mflowlayout;
  private edittext edittext;
  private button button;
  private list<string> strings;
  //布局管理器
  private layoutinflater minflater;
  //流式布局的子布局
  private textview tv;
  public handler handler = new handler() {
    @override
    public void handlemessage(message msg) {
      switch (msg.what) {
        case 1:
          mflowlayout.setadapter(new tagadapter<string>(strings) {
            @override
            public view getview(flowlayout parent, int position, string s) {
              tv = (textview) minflater.inflate(r.layout.tv,
                  mflowlayout, false);
              tv.settext(s);
              return tv;
            }
          });
          break;
      }
      super.handlemessage(msg);
    }
  };
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    minflater = layoutinflater.from(this);
    mflowlayout = (tagflowlayout) findviewbyid(r.id.id_flowlayout);
    edittext = (edittext) findviewbyid(r.id.edt);
    button = (button) findviewbyid(r.id.btn);
    strings = new arraylist<>();
    button.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        string aa = edittext.gettext().tostring().trim();
        strings.add(aa);
        //通知handler更新ui
        handler.sendemptymessagedelayed(1, 0);
      }
    });
    //流式布局tag的点击方法
    mflowlayout.setontagclicklistener(new tagflowlayout.ontagclicklistener() {
      @override
      public boolean ontagclick(view view, int position, flowlayout parent) {
        toast.maketext(mainactivity.this, tv.gettext(), toast.length_short).show();
        return true;
      }
    });
  }

当我们点击确定按钮的时候,通知handler 去更新ui界面

效果图如下:

Android流式布局实现历史搜索记录功能

这样就实现了一个简单的流式布局历史搜索记录

github地址:https://github.com/zhangliyong114/flowlayoutdemo

以上所述是小编给大家介绍的android流式布局实现历史搜索记录功能,希望对大家有所帮助