我们在常用的电商或者旅游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

承载所有元素。看代码比看文字实在。

 

**[java]** [view plain](http://blog.csdn.net/minimicall/article/details/39484493#)[copy](http://blog.csdn.net/minimicall/article/details/39484493#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/473461)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/473461/fork)
  <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;">&#8220;MainActivity&#8221;</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;">&#8220;initView&#8221;</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;">&#8220;initValue&#8221;</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;">&#8220;距离&#8221;</span>);  </span>

- <span style="color: black;">        mTextArray.add(<span class="string" style="color: blue;">&#8220;区域&#8221;</span>);  </span>

- <span style="color: black;">        mTextArray.add(<span class="string" style="color: blue;">&#8220;距离&#8221;</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;">&#8220;initListener&#8221;</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;">&#8220;ViewLeft&#8221;</span>, <span class="string" style="color: blue;">&#8220;OnSelectListener, getValue&#8221;</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;">&#8220;ViewMiddle&#8221;</span>,<span class="string" style="color: blue;">&#8220;OnSelectListener, getValue&#8221;</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;">&#8220;ViewRight&#8221;</span>,<span class="string" style="color: blue;">&#8220;OnSelectListener, getValue&#8221;</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;">&#8220;onRefresh,view:&#8221;</span>+view+<span class="string" style="color: blue;">&#8220;,showText:&#8221;</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;">&#8220;getPosition&#8221;</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> &#8211;<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。

 

**[java]** [view plain](http://blog.csdn.net/minimicall/article/details/39484493#)[copy](http://blog.csdn.net/minimicall/article/details/39484493#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/473461)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/473461/fork)
  <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;">&#8220;ExpandTabView&#8221;</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;">&#8220;&#8221;</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;">&#8220;setValue&#8221;</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() &#8211; <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;">&#8220;RelativeLayout&#8221;</span>,<span class="string" style="color: blue;">&#8220;view:&#8221;</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;">&#8220;tButton&#8221;</span>,<span class="string" style="color: blue;">&#8220;setOnClickListener(l)&#8221;</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;">&#8220;startAnimation&#8221;</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;">&#8220;startAnimation(),new popupWindow now&#8221;</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;">&#8220;startAnimation(),selectedButton:&#8221;</span>+selectedButton+<span class="string" style="color: blue;">&#8220;,isChecked:&#8221;</span>+selectedButton.isChecked()+  </span>

- <span style="color: black;">                <span class="string" style="color: blue;">&#8220;,popupWindow.isShowing:&#8221;</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;">&#8220;onPressBack&#8221;</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;">&#8220;hide()&#8221;</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;">&#8220;onDismiss,selectPosition:&#8221;</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

其中的一个示例,其他两个就不列举了

 

**[java]** [view plain](http://blog.csdn.net/minimicall/article/details/39484493#)[copy](http://blog.csdn.net/minimicall/article/details/39484493#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/473461)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/473461/fork)
  <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;">&#8220;ViewLeft&#8221;</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;">&#8220;item1&#8221;</span>, <span class="string" style="color: blue;">&#8220;item2&#8221;</span>, <span class="string" style="color: blue;">&#8220;item3&#8221;</span>, <span class="string" style="color: blue;">&#8220;item4&#8221;</span>, <span class="string" style="color: blue;">&#8220;item5&#8221;</span>, <span class="string" style="color: blue;">&#8220;item6&#8221;</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;">&#8220;1&#8221;</span>, <span class="string" style="color: blue;">&#8220;2&#8221;</span>, <span class="string" style="color: blue;">&#8220;3&#8221;</span>, <span class="string" style="color: blue;">&#8220;4&#8221;</span>, <span class="string" style="color: blue;">&#8220;5&#8221;</span>, <span class="string" style="color: blue;">&#8220;6&#8221;</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;">&#8220;item1&#8221;</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,效果图

好,今天就到这里。。希望有用。

💬 评论