A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 广驰 于 2013-5-23 11:36 编辑

实现原理是上方使用HorizontalScrollView这个可以水平横向拖动的控件,在其中加入了5个RadioButton;下方使用的是ViewPager,里面加入了7个Layout文件,其中第一个和最后一个为空,是为了实现拖到第一个屏幕的时候还能往外拖动的效果



游客,如果您要查看本帖隐藏内容请回复



43 个回复

倒序浏览
这个样子!
回复 使用道具 举报
本帖最后由 广驰 于 2013-5-23 11:38 编辑
  1. package com.zj.popupwindow;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import android.app.Activity;
  6. import android.graphics.drawable.BitmapDrawable;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.Gravity;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.view.View.OnClickListener;
  13. import android.view.ViewGroup.LayoutParams;
  14. import android.widget.AdapterView;
  15. import android.widget.AdapterView.OnItemClickListener;
  16. import android.widget.ImageView;
  17. import android.widget.LinearLayout;
  18. import android.widget.ListView;
  19. import android.widget.PopupWindow;
  20. import android.widget.PopupWindow.OnDismissListener;
  21. import android.widget.SimpleAdapter;
  22. import android.widget.TextView;
  23. import android.widget.Toast;
  24. public class MainActivity extends Activity {
  25. private boolean mIsopen = false; //是否已经打开
  26. private ImageView mImageView; //三角形图标
  27. private LinearLayout mLinearLayout;
  28. private PopupWindow mPopupWindow;
  29. private ArrayList<HashMap<String, Object>> mArrayList;
  30. @Override
  31. public void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.main);
  34. mLinearLayout = (LinearLayout)findViewById(R.id.pop_parent);
  35. mImageView = (ImageView)findViewById(R.id.imageView1);
  36. mLinearLayout.setOnClickListener(new OnClickListener() {
  37. @Override
  38. public void onClick(View v) {
  39. mIsopen = !mIsopen;
  40. if (mIsopen) {
  41. mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
  42. }else {
  43. mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
  44. }
  45. //设置popupwindow中的listView
  46. mArrayList = createData();
  47. View _View = getLayoutInflater().inflate(R.layout.popupwindow, null);
  48. ListView _ListView = (ListView) _View.findViewById(R.id.list);
  49. SimpleAdapter _SimpleAdapter = new SimpleAdapter(
  50. MainActivity.this, mArrayList,
  51. R.layout.listview_item, new String[]{"zj"},
  52. new int[]{R.id.list_item_txt}
  53. );
  54. _ListView.setAdapter(_SimpleAdapter);
  55. _ListView.setOnItemClickListener(new MyListOnItemClick());
  56. /*
  57. * 这个去掉了也没什么影响,先留下
  58. * 通过ListView的setItemsCanFocus(true)方法并不可以使ItemView
  59. * 在touch mode下可以获取焦点,他只是表明在由ListAdapter创建的视图中
  60. * ,可包含能获得焦点的项目.
  61. */
  62. _ListView.setItemsCanFocus(false);
  63. //设置PopupWindow
  64. mPopupWindow = new PopupWindow(
  65. _View,
  66. 160,
  67. 220
  68. );
  69. //注意下面所做的4条是为了使 点击popuWindow 以外的区域能够关闭它。
  70. // 使其聚焦
  71. mPopupWindow.setFocusable(true);
  72. // 设置允许在外点击消失
  73. mPopupWindow.setOutsideTouchable(true);
  74. //刷新状态
  75. mPopupWindow.update();
  76. //点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener
  77. mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
  78. mPopupWindow.showAsDropDown(findViewById(R.id.pop_parent), -50, 0);
  79. //mPopupWindow.showAtLocation(findViewById(R.id.pop_parent), Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, (int)getResources().getDimension(R.dimen.pop_y));
  80. mPopupWindow.setOnDismissListener(new OnDismissListener() {
  81. @Override
  82. public void onDismiss() {
  83. mIsopen = ! mIsopen;
  84. if (mIsopen) {
  85. mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
  86. }else {
  87. mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
  88. }
  89. Log.i("zj", "onDismiss");
  90. }
  91. });
  92. }
  93. });
  94. }
  95. private ArrayList<HashMap<String, Object>> createData(){
  96. HashMap<String, Object> map1 = new HashMap<String, Object>();
  97. map1.put("zj", "美食");
  98. HashMap<String, Object> map2 = new HashMap<String, Object>();
  99. map2.put("zj", "娱乐");
  100. HashMap<String, Object> map3 = new HashMap<String, Object>();
  101. map3.put("zj", "购物");
  102. HashMap<String, Object> map4 = new HashMap<String, Object>();
  103. map4.put("zj", "电影");
  104. ArrayList<HashMap<String, Object>> _ArrayList = new ArrayList<HashMap<String,Object>>();
  105. _ArrayList.add(map1);
  106. _ArrayList.add(map2);
  107. _ArrayList.add(map3);
  108. _ArrayList.add(map4);
  109. return _ArrayList;
  110. }
  111. class MyListOnItemClick implements OnItemClickListener{
  112. @Override
  113. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  114. long arg3) {
  115. // TODO Auto-generated method stub
  116. HashMap<String, Object> temp = mArrayList.get(arg2);
  117. mPopupWindow.dismiss();
  118. Toast.makeText(MainActivity.this, temp.get("zj").toString(), 1).show();
  119. }
  120. }
复制代码
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <HorizontalScrollView
  8. android:layout_width="match_parent"
  9. android:layout_height="50dp"
  10. android:fadingEdge="@null"
  11. android:scrollbars="none"
  12. android:background="#555555"
  13. android:id="@+id/horizontalScrollView"
  14. >
  15. <RelativeLayout
  16. android:layout_width="match_parent"
  17. android:layout_height="match_parent"
  18. android:background="#33b5e5"
  19. >
  20. <RadioGroup
  21. android:id="@+id/radioGroup"
  22. android:layout_width="fill_parent"
  23. android:layout_height="49dp"
  24. android:orientation="horizontal"
  25. android:layout_alignParentTop="true"
  26. >
  27. <RadioButton
  28. style="@style/radioButton"
  29. android:text="one"
  30. android:id="@+id/btn1"
  31. />
  32. <RadioButton
  33. style="@style/radioButton"
  34. android:text="two"
  35. android:id="@+id/btn2"
  36. />
  37. <RadioButton
  38. style="@style/radioButton"
  39. android:text="three"
  40. android:id="@+id/btn3"
  41. />
  42. <RadioButton
  43. style="@style/radioButton"
  44. android:text="four"
  45. android:id="@+id/btn4"
  46. />
  47. <RadioButton
  48. style="@style/radioButton"
  49. android:text="five"
  50. android:id="@+id/btn5"
  51. />
  52. </RadioGroup>
  53. <ImageView
  54. android:id="@+id/img1"
  55. android:layout_width="100dp"
  56. android:layout_height="4dp"
  57. android:background="#33b5e5"
  58. android:layout_alignParentBottom="true"
  59. />
  60. </RelativeLayout>
  61. </HorizontalScrollView>
  62. <android.support.v4.view.ViewPager
  63. android:id="@+id/pager"
  64. android:layout_width="fill_parent"
  65. android:layout_height="fill_parent"
  66. />
  67. </LinearLayout>
复制代码
回复 使用道具 举报
:handshake
回复 使用道具 举报
收藏了很有用
回复 使用道具 举报
学习一下啊
回复 使用道具 举报
thank you @@
回复 使用道具 举报
看看看看看
回复 使用道具 举报
myclover 黑马帝 2013-5-23 23:02:03
9#
挺不错的啊
回复 使用道具 举报
学习了
加油
回复 使用道具 举报
好东东。
回复 使用道具 举报
vipzh 中级黑马 2013-5-26 21:18:12
12#
支持一下。。。。
回复 使用道具 举报
这个很好用
回复 使用道具 举报
偶吧。。加油哦
回复 使用道具 举报
Bcisk 初级黑马 2013-5-28 22:10:41
15#
dddddddddddddddddddddddddddddddddd
回复 使用道具 举报
很好。学习。多谢楼主!
回复 使用道具 举报
很好。学习。多谢楼主!
回复 使用道具 举报
顶楼主,学习 了
回复 使用道具 举报
要是能再美化美化就更好了
回复 使用道具 举报
这个东东从哪来的,我好像看到过
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马