我们在常用的电商或者旅游APP中,例如美团,手机淘宝等等,都能够看的到有那种下拉式的二级列表菜单。具体如图所示:
上面两张图就是美团的一个二级列表菜单的一个展示。我相信很多人都想开发一个跟它一样的功能放到自己的APP中。好,接下来我们就开始动手,解决它。
1,结构分析#
首先,我们给出这个下来菜单需要的组建。我们用线框图来分析。
1)如上图所示,最外围的是一个Activity,顶部包含了一个View的容器,这个容器主要是装载ToggleButton来实现诸如美团里面的“美食,全城,理我最近,刷选”这一行。这一行一点就会弹出对应的下来菜单。
2)下拉菜单是如何实现的呢?,这里我们利用了PopupWindow来实现这一弹出式窗口。然后我们在弹出式窗口里面再定义我们的下来列表项,是单列还是二级菜单,都是由里面来定。
3)不同的菜单,需要一级或者需要二级,在这里根据我的需求而变动。我们在PopupWindow上面加一个自定义的LeftView,或者是MiddleView,RightView。主要是一个ToggleButton,你弹出一个窗口,你就定制一个窗口。
3)视图里面嵌入ListView,就形成了列表项。
好分析就到上面为止,接下来我们一步步的说明实现。
2,项目结构#
本项目的项目结构如图所示:
1) Adapter。适配器,主要是为ListView提供数据适配的。
2)MainActivity。主活动页面。
3)ExpandTabView。本项目的核心类,它包含ToggleButton容器和PopupWindow,是控制弹出窗口的核心类。
4)ViewLeft,ViewMiddle,ViewRight。是弹出里面嵌套的类,实现不同的列表菜单。
3,MainActivity#
<div>
</div>
</div>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">package</span> com.example.expandtabview; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> java.util.ArrayList; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.app.Activity; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.os.Bundle; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.util.Log; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.view.View; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.Toast; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.view.ExpandTabView; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.view.ViewLeft; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.view.ViewMiddle; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.view.ViewRight; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">class</span> MainActivity <span class="keyword" style="font-weight: bold; color: #006699;">extends</span> Activity { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">static</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> String TAG = <span class="string" style="color: blue;">“MainActivity”</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ExpandTabView expandTabView; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ArrayList<View> mViewArray = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<View>(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ViewLeft viewLeft; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ViewMiddle viewMiddle; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ViewRight viewRight; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">protected</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onCreate(Bundle savedInstanceState) { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>.onCreate(savedInstanceState); </span>
- <span style="color: black;"> setContentView(R.layout.activity_main); </span>
- <span style="color: black;"> initView(); </span>
- <span style="color: black;"> initVaule(); </span>
- <span style="color: black;"> initListener(); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> initView() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“initView”</span>); </span>
- <span style="color: black;"> expandTabView = (ExpandTabView) findViewById(R.id.expandtab_view); </span>
- <span style="color: black;"> viewLeft = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewLeft(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>); </span>
- <span style="color: black;"> viewMiddle = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewMiddle(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>); </span>
- <span style="color: black;"> viewRight = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewRight(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> initVaule() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“initValue”</span>); </span>
- <span style="color: black;"> mViewArray.add(viewLeft); </span>
- <span style="color: black;"> mViewArray.add(viewMiddle); </span>
- <span style="color: black;"> mViewArray.add(viewRight); </span>
- <span style="color: black;"> ArrayList<String> mTextArray = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<String>(); </span>
- <span style="color: black;"> mTextArray.add(<span class="string" style="color: blue;">“距离”</span>); </span>
- <span style="color: black;"> mTextArray.add(<span class="string" style="color: blue;">“区域”</span>); </span>
- <span style="color: black;"> mTextArray.add(<span class="string" style="color: blue;">“距离”</span>); </span>
- <span style="color: black;"> expandTabView.setValue(mTextArray, mViewArray);<span class="comment" style="color: #008200;">//将三个下拉列表设置进去</span> </span>
- <span style="color: black;"> expandTabView.setTitle(viewLeft.getShowText(), <span class="number" style="color: #c00000;"></span>); </span>
- <span style="color: black;"> expandTabView.setTitle(viewMiddle.getShowText(), <span class="number" style="color: #c00000;">1</span>); </span>
- <span style="color: black;"> expandTabView.setTitle(viewRight.getShowText(), <span class="number" style="color: #c00000;">2</span>); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> initListener() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“initListener”</span>); </span>
- <span style="color: black;"> viewLeft.setOnSelectListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewLeft.OnSelectListener() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> getValue(String distance, String showText) { </span>
- <span style="color: black;"> Log.d(<span class="string" style="color: blue;">“ViewLeft”</span>, <span class="string" style="color: blue;">“OnSelectListener, getValue”</span>); </span>
- <span style="color: black;"> onRefresh(viewLeft, showText); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> viewMiddle.setOnSelectListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewMiddle.OnSelectListener() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> getValue(String showText) { </span>
- <span style="color: black;"> Log.d(<span class="string" style="color: blue;">“ViewMiddle”</span>,<span class="string" style="color: blue;">“OnSelectListener, getValue”</span>); </span>
- <span style="color: black;"> onRefresh(viewMiddle,showText); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> viewRight.setOnSelectListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> ViewRight.OnSelectListener() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> getValue(String distance, String showText) { </span>
- <span style="color: black;"> Log.d(<span class="string" style="color: blue;">“ViewRight”</span>,<span class="string" style="color: blue;">“OnSelectListener, getValue”</span>); </span>
- <span style="color: black;"> onRefresh(viewRight, showText); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onRefresh(View view, String showText) { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“onRefresh,view:”</span>+view+<span class="string" style="color: blue;">“,showText:”</span>+showText); </span>
- <span style="color: black;"> expandTabView.onPressBack(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> position = getPositon(view); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (position >= <span class="number" style="color: #c00000;"></span> && !expandTabView.getTitle(position).equals(showText)) { </span>
- <span style="color: black;"> expandTabView.setTitle(showText, position); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> Toast.makeText(MainActivity.<span class="keyword" style="font-weight: bold; color: #006699;">this</span>, showText, Toast.LENGTH_SHORT).show(); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> getPositon(View tView) { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“getPosition”</span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">for</span> (<span class="keyword" style="font-weight: bold; color: #006699;">int</span> i = <span class="number" style="color: #c00000;"></span>; i < mViewArray.size(); i++) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (mViewArray.get(i) == tView) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> i; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> –<span class="number" style="color: #c00000;">1</span>; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onBackPressed() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (!expandTabView.onPressBack()) { </span>
- <span style="color: black;"> finish(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;">} </span>
4 ,ExpandTabView#
最主要就是如何处理当我们点击这些ToggleButton的时候要弹出或者收起这些PopupWindow。
<div>
</div>
</div>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">package</span> com.example.view; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> java.util.ArrayList; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.expandtabview.R; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.app.Activity; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.content.Context; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.util.AttributeSet; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.util.Log; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.view.LayoutInflater; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.view.View; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.LinearLayout; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.PopupWindow; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.PopupWindow.OnDismissListener; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.RelativeLayout; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.TextView; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.ToggleButton; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 菜单控件头部,封装了下拉动画,动态生成头部按钮个数</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * </span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * @author zengjinlong</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">class</span> ExpandTabView <span class="keyword" style="font-weight: bold; color: #006699;">extends</span> LinearLayout <span class="keyword" style="font-weight: bold; color: #006699;">implements</span> OnDismissListener { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">static</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> String TAG = <span class="string" style="color: blue;">“ExpandTabView”</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ToggleButton selectedButton; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ArrayList<String> mTextArray = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<String>(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ArrayList<RelativeLayout> mViewArray = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<RelativeLayout>(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ArrayList<ToggleButton> mToggleButton = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<ToggleButton>(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> Context mContext; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> SMALL = <span class="number" style="color: #c00000;"></span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> displayWidth; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> displayHeight; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> PopupWindow popupWindow; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> selectPosition; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> ExpandTabView(Context context) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>(context); </span>
- <span style="color: black;"> init(context); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> ExpandTabView(Context context, AttributeSet attrs) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>(context, attrs); </span>
- <span style="color: black;"> init(context); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 根据选择的位置设置tabitem显示的值</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setTitle(String valueText, <span class="keyword" style="font-weight: bold; color: #006699;">int</span> position) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (position < mToggleButton.size()) { </span>
- <span style="color: black;"> mToggleButton.get(position).setText(valueText); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setTitle(String title){ </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 根据选择的位置获取tabitem显示的值</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> String getTitle(<span class="keyword" style="font-weight: bold; color: #006699;">int</span> position) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (position < mToggleButton.size() && mToggleButton.get(position).getText() != <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> mToggleButton.get(position).getText().toString(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> <span class="string" style="color: blue;">“”</span>; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 设置tabitem的个数和初始值</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * @param textArray 标题数组</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * @param viewArray 控件数组</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setValue(ArrayList<String> textArray, ArrayList<View> viewArray) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (mContext == <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span>; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“setValue”</span>); </span>
- <span style="color: black;"> mTextArray = textArray; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">for</span> (<span class="keyword" style="font-weight: bold; color: #006699;">int</span> i = <span class="number" style="color: #c00000;"></span>; i < viewArray.size(); i++) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> RelativeLayout r = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> RelativeLayout(mContext); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> maxHeight = (<span class="keyword" style="font-weight: bold; color: #006699;">int</span>) (displayHeight * <span class="number" style="color: #c00000;">0.7</span>); </span>
- <span style="color: black;"> RelativeLayout.LayoutParams rl = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, maxHeight); </span>
- <span style="color: black;"> rl.leftMargin = <span class="number" style="color: #c00000;">10</span>; </span>
- <span style="color: black;"> rl.rightMargin = <span class="number" style="color: #c00000;">10</span>; </span>
- <span style="color: black;"> r.addView(viewArray.get(i), rl); </span>
- <span style="color: black;"> mViewArray.add(r); </span>
- <span style="color: black;"> r.setTag(SMALL); </span>
- <span style="color: black;"> ToggleButton tButton = (ToggleButton) inflater.inflate(R.layout.toggle_button, <span class="keyword" style="font-weight: bold; color: #006699;">this</span>, <span class="keyword" style="font-weight: bold; color: #006699;">false</span>); </span>
- <span style="color: black;"> addView(tButton); </span>
- <span style="color: black;"> View line = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> TextView(mContext); </span>
- <span style="color: black;"> line.setBackgroundResource(R.drawable.choosebar_line); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (i < viewArray.size() – <span class="number" style="color: #c00000;">1</span>) { </span>
- <span style="color: black;"> LinearLayout.LayoutParams lp = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> LinearLayout.LayoutParams(<span class="number" style="color: #c00000;">2</span>, LinearLayout.LayoutParams.MATCH_PARENT); </span>
- <span style="color: black;"> addView(line, lp); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> mToggleButton.add(tButton); </span>
- <span style="color: black;"> tButton.setTag(i); </span>
- <span style="color: black;"> tButton.setText(mTextArray.get(i)); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> r.setOnClickListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> OnClickListener() { </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onClick(View v) { </span>
- <span style="color: black;"> Log.d(<span class="string" style="color: blue;">“RelativeLayout”</span>,<span class="string" style="color: blue;">“view:”</span>+v); </span>
- <span style="color: black;"> onPressBack(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> r.setBackgroundColor(mContext.getResources().getColor(R.color.popup_main_background)); </span>
- <span style="color: black;"> tButton.setOnClickListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> OnClickListener() { </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onClick(View view) { </span>
- <span style="color: black;"> Log.d(<span class="string" style="color: blue;">“tButton”</span>,<span class="string" style="color: blue;">“setOnClickListener(l)”</span>); </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// initPopupWindow();</span> </span>
- <span style="color: black;"> ToggleButton tButton = (ToggleButton) view; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (selectedButton != <span class="keyword" style="font-weight: bold; color: #006699;">null</span> && selectedButton != tButton) { </span>
- <span style="color: black;"> selectedButton.setChecked(<span class="keyword" style="font-weight: bold; color: #006699;">false</span>); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> selectedButton = tButton; </span>
- <span style="color: black;"> selectPosition = (Integer) selectedButton.getTag(); </span>
- <span style="color: black;"> startAnimation(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (mOnButtonClickListener != <span class="keyword" style="font-weight: bold; color: #006699;">null</span> && tButton.isChecked()) { </span>
- <span style="color: black;"> mOnButtonClickListener.onClick(selectPosition); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> }<span class="comment" style="color: #008200;">// for..</span> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> startAnimation() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“startAnimation”</span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (popupWindow == <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“startAnimation(),new popupWindow now”</span>); </span>
- <span style="color: black;"> popupWindow = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> PopupWindow(mViewArray.get(selectPosition), displayWidth, displayHeight); </span>
- <span style="color: black;"> popupWindow.setAnimationStyle(R.style.PopupWindowAnimation); </span>
- <span style="color: black;"> popupWindow.setFocusable(<span class="keyword" style="font-weight: bold; color: #006699;">false</span>); </span>
- <span style="color: black;"> popupWindow.setOutsideTouchable(<span class="keyword" style="font-weight: bold; color: #006699;">true</span>); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“startAnimation(),selectedButton:”</span>+selectedButton+<span class="string" style="color: blue;">“,isChecked:”</span>+selectedButton.isChecked()+ </span>
- <span style="color: black;"> <span class="string" style="color: blue;">“,popupWindow.isShowing:”</span>+popupWindow.isShowing()); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (selectedButton.isChecked()) { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (!popupWindow.isShowing()) { </span>
- <span style="color: black;"> showPopup(selectPosition); </span>
- <span style="color: black;"> } <span class="keyword" style="font-weight: bold; color: #006699;">else</span> { </span>
- <span style="color: black;"> popupWindow.setOnDismissListener(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>); </span>
- <span style="color: black;"> popupWindow.dismiss(); </span>
- <span style="color: black;"> hideView(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } <span class="keyword" style="font-weight: bold; color: #006699;">else</span> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (popupWindow.isShowing()) { </span>
- <span style="color: black;"> popupWindow.dismiss(); </span>
- <span style="color: black;"> hideView(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> showPopup(<span class="keyword" style="font-weight: bold; color: #006699;">int</span> position) { </span>
- <span style="color: black;"> View tView = mViewArray.get(selectPosition).getChildAt(<span class="number" style="color: #c00000;"></span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (tView <span class="keyword" style="font-weight: bold; color: #006699;">instanceof</span> ViewBaseAction) { </span>
- <span style="color: black;"> ViewBaseAction f = (ViewBaseAction) tView; </span>
- <span style="color: black;"> f.show(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (popupWindow.getContentView() != mViewArray.get(position)) { </span>
- <span style="color: black;"> popupWindow.setContentView(mViewArray.get(position)); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> popupWindow.showAsDropDown(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>, <span class="number" style="color: #c00000;"></span>, <span class="number" style="color: #c00000;"></span>); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 如果菜单成展开状态,则让菜单收回去</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">boolean</span> onPressBack() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“onPressBack”</span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (popupWindow != <span class="keyword" style="font-weight: bold; color: #006699;">null</span> && popupWindow.isShowing()) { </span>
- <span style="color: black;"> popupWindow.dismiss(); </span>
- <span style="color: black;"> hideView(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (selectedButton != <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> selectedButton.setChecked(<span class="keyword" style="font-weight: bold; color: #006699;">false</span>); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> <span class="keyword" style="font-weight: bold; color: #006699;">true</span>; </span>
- <span style="color: black;"> } <span class="keyword" style="font-weight: bold; color: #006699;">else</span> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> <span class="keyword" style="font-weight: bold; color: #006699;">false</span>; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> hideView() { </span>
- <span style="color: black;"> Log.d(TAG, <span class="string" style="color: blue;">“hide()”</span>); </span>
- <span style="color: black;"> View tView = mViewArray.get(selectPosition).getChildAt(<span class="number" style="color: #c00000;"></span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (tView <span class="keyword" style="font-weight: bold; color: #006699;">instanceof</span> ViewBaseAction) { </span>
- <span style="color: black;"> ViewBaseAction f = (ViewBaseAction) tView; </span>
- <span style="color: black;"> f.hide(); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> init(Context context) { </span>
- <span style="color: black;"> mContext = context; </span>
- <span style="color: black;"> displayWidth = ((Activity) mContext).getWindowManager().getDefaultDisplay().getWidth(); </span>
- <span style="color: black;"> displayHeight = ((Activity) mContext).getWindowManager().getDefaultDisplay().getHeight(); </span>
- <span style="color: black;"> setOrientation(LinearLayout.HORIZONTAL); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onDismiss() { </span>
- <span style="color: black;"> Log.d(TAG,<span class="string" style="color: blue;">“onDismiss,selectPosition:”</span>+selectPosition); </span>
- <span style="color: black;"> showPopup(selectPosition); </span>
- <span style="color: black;"> popupWindow.setOnDismissListener(<span class="keyword" style="font-weight: bold; color: #006699;">null</span>); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> OnButtonClickListener mOnButtonClickListener; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 设置tabitem的点击监听事件</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setOnButtonClickListener(OnButtonClickListener l) { </span>
- <span style="color: black;"> mOnButtonClickListener = l; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">/**</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * 自定义tabitem点击回调接口</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">interface</span> OnButtonClickListener { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onClick(<span class="keyword" style="font-weight: bold; color: #006699;">int</span> selectPosition); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;">} </span>
5,ViewLeft#
其中的一个示例,其他两个就不列举了
<div>
</div>
</div>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">package</span> com.example.view; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.adapter.TextAdapter; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> com.example.expandtabview.R; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.content.Context; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.util.AttributeSet; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.view.LayoutInflater; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.view.View; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.ListView; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.RelativeLayout; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.Toast; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">class</span> ViewLeft <span class="keyword" style="font-weight: bold; color: #006699;">extends</span> RelativeLayout <span class="keyword" style="font-weight: bold; color: #006699;">implements</span> ViewBaseAction{ </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">static</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> String TAG = <span class="string" style="color: blue;">“ViewLeft”</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ListView mListView; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> String[] items = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> String[] { <span class="string" style="color: blue;">“item1”</span>, <span class="string" style="color: blue;">“item2”</span>, <span class="string" style="color: blue;">“item3”</span>, <span class="string" style="color: blue;">“item4”</span>, <span class="string" style="color: blue;">“item5”</span>, <span class="string" style="color: blue;">“item6”</span> };<span class="comment" style="color: #008200;">//显示字段</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> String[] itemsVaule = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> String[] { <span class="string" style="color: blue;">“1”</span>, <span class="string" style="color: blue;">“2”</span>, <span class="string" style="color: blue;">“3”</span>, <span class="string" style="color: blue;">“4”</span>, <span class="string" style="color: blue;">“5”</span>, <span class="string" style="color: blue;">“6”</span> };<span class="comment" style="color: #008200;">//隐藏id</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> OnSelectListener mOnSelectListener; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> TextAdapter adapter; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> String mDistance; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> String showText = <span class="string" style="color: blue;">“item1”</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> Context mContext; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> String getShowText() { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> showText; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> ViewLeft(Context context) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>(context); </span>
- <span style="color: black;"> init(context); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> ViewLeft(Context context, AttributeSet attrs, <span class="keyword" style="font-weight: bold; color: #006699;">int</span> defStyle) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>(context, attrs, defStyle); </span>
- <span style="color: black;"> init(context); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> ViewLeft(Context context, AttributeSet attrs) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>(context, attrs); </span>
- <span style="color: black;"> init(context); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> init(Context context) { </span>
- <span style="color: black;"> mContext = context; </span>
- <span style="color: black;"> LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); </span>
- <span style="color: black;"> inflater.inflate(R.layout.view_distance, <span class="keyword" style="font-weight: bold; color: #006699;">this</span>, <span class="keyword" style="font-weight: bold; color: #006699;">true</span>); </span>
- <span style="color: black;"> setBackgroundDrawable(getResources().getDrawable(R.drawable.choosearea_bg_mid)); </span>
- <span style="color: black;"> mListView = (ListView) findViewById(R.id.listView); </span>
- <span style="color: black;"> adapter = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> TextAdapter(context, items, R.drawable.choose_item_right, R.drawable.choose_eara_item_selector); </span>
- <span style="color: black;"> adapter.setTextSize(<span class="number" style="color: #c00000;">17</span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (mDistance != <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">for</span> (<span class="keyword" style="font-weight: bold; color: #006699;">int</span> i = <span class="number" style="color: #c00000;"></span>; i < itemsVaule.length; i++) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (itemsVaule[i].equals(mDistance)) { </span>
- <span style="color: black;"> adapter.setSelectedPositionNoNotify(i); </span>
- <span style="color: black;"> showText = items[i]; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">break</span>; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> mListView.setAdapter(adapter); </span>
- <span style="color: black;"> adapter.setOnItemClickListener(<span class="keyword" style="font-weight: bold; color: #006699;">new</span> TextAdapter.OnItemClickListener() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onItemClick(View view, <span class="keyword" style="font-weight: bold; color: #006699;">int</span> position) { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">if</span> (mOnSelectListener != <span class="keyword" style="font-weight: bold; color: #006699;">null</span>) { </span>
- <span style="color: black;"> showText = items[position]; </span>
- <span style="color: black;"> mOnSelectListener.getValue(itemsVaule[position], items[position]); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setOnSelectListener(OnSelectListener onSelectListener) { </span>
- <span style="color: black;"> mOnSelectListener = onSelectListener; </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">interface</span> OnSelectListener { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> getValue(String distance, String showText); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> hide() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> show() { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> </span>
- <span style="color: black;">} </span>
6,效果图#
好,今天就到这里。。希望有用。
💬 评论