2016-01-15 145 views
16

我一直在关注SearchView和对话框实现方向here。两者都在下面可见。 SO上有许多关于定制搜索框的问题,但很少有关于定制建议UI的问题。 (那些是关于颜色/字体的,默认值对我来说很好。)我希望能够扩大建议以占据整个屏幕宽度。有没有什么方法可以使用对话框或SearchView实现自定义宽度。我不想使用库,除非这是唯一的选择。如果这是可行的或更容易与一个罚款的实施。android搜索:自定义建议布局

下面是对话的实现看起来像我: enter image description here

下面介绍一下搜索查看执行看起来像我: enter image description here

+1

http://stackoverflow.com/questions/27671954/android-prevent-text-truncation-in-searchview-suggestions ..这可能有帮助 – user2511882

+0

@ lf215你可以做一个自定义的istview .... –

回答

3

这是你如何能做到这一点: this is what I created 第1步:

只需创建无论你想与回收视图或扩展列表或列表布局使用。

步骤2:在您的活动(CityActivity),你需要这样做:

  1. 创建一个这样的处理程序:

私有静态类SearchHandler扩展了Handler {

private WeakReference<CityActivity> mTarget; 

SearchHandler(CityActivity target) { 
    mTarget = new WeakReference<>(target); 
} 

public void setTarget(CityActivity target) { 
    mTarget.clear(); 
    mTarget = new WeakReference<>(target); 

} 

@Override 
public void handleMessage(final Message msg) { 
    if (msg.what == CityActivity.TRIGGER_SEARCH) { 
     CityActivity activity = mTarget.get(); 
     activity.makeRequest(mSearchText.trim()); 
    } 
} 

} 2.将textchangelistener放入您的搜索字词上

public void setTextChangeListener() { 
    searchView.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      mSearchText = searchView.getText().toString(); 
      if (!mSearchText.trim().isEmpty()) { 
       handler.removeMessages(CitySelectionActivity.TRIGGER_SEARCH); 
       handler.sendEmptyMessageDelayed(CityActivity.TRIGGER_SEARCH, 
         CityActivity.SEARCH_TRIGGER_DELAY_IN_MS); 
      } else { 
       suggestList.clear(); 
       fillAnything(); 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 
} 

在这里建议列表是给你的

4

Here 是其主从谷歌地址搜索地点的信息库。它具有全屏搜索列表的实现。

定制搜索查看

customized searchview

0

列表您应该创建搜索结果的活动,并写到哪列表视图或recyclerview填充宽度使用match_parent值的布局XML文件中的数据。 内容必须是适配器中的搜索结果。