導航選單橫向左右滑動並和下方的控制元件實現聯動
阿新 • • 發佈:2019-01-06
package com.zj.popupwindow; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private boolean mIsopen = false; //是否已經開啟 private ImageView mImageView; //三角形圖示 private LinearLayout mLinearLayout; private PopupWindow mPopupWindow; private ArrayList<HashMap<String, Object>> mArrayList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLinearLayout = (LinearLayout)findViewById(R.id.pop_parent); mImageView = (ImageView)findViewById(R.id.imageView1); mLinearLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mIsopen = !mIsopen; if (mIsopen) { mImageView.setBackgroundResource(R.drawable.icon_arrow_down); }else { mImageView.setBackgroundResource(R.drawable.icon_arrow_up); } //設定popupwindow中的listView mArrayList = createData(); View _View = getLayoutInflater().inflate(R.layout.popupwindow, null); ListView _ListView = (ListView) _View.findViewById(R.id.list); SimpleAdapter _SimpleAdapter = new SimpleAdapter( MainActivity.this, mArrayList, R.layout.listview_item, new String[]{"zj"}, new int[]{R.id.list_item_txt} ); _ListView.setAdapter(_SimpleAdapter); _ListView.setOnItemClickListener(new MyListOnItemClick()); /* * 這個去掉了也沒什麼影響,先留下 * 通過ListView的setItemsCanFocus(true)方法並不可以使ItemView * 在touch mode下可以獲取焦點,他只是表明在由ListAdapter建立的檢視中 * ,可包含能獲得焦點的專案. */ _ListView.setItemsCanFocus(false); //設定PopupWindow mPopupWindow = new PopupWindow( _View, 160, 220 ); //注意下面所做的4條是為了使 點選popuWindow 以外的區域能夠關閉它。 // 使其聚焦 mPopupWindow.setFocusable(true); // 設定允許在外點選消失 mPopupWindow.setOutsideTouchable(true); //重新整理狀態 mPopupWindow.update(); //點back鍵和其他地方使其消失,設定了這個才能觸發OnDismisslistener mPopupWindow.setBackgroundDrawable(new BitmapDrawable()); mPopupWindow.showAsDropDown(findViewById(R.id.pop_parent), -50, 0); //mPopupWindow.showAtLocation(findViewById(R.id.pop_parent), Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, (int)getResources().getDimension(R.dimen.pop_y)); mPopupWindow.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { mIsopen = ! mIsopen; if (mIsopen) { mImageView.setBackgroundResource(R.drawable.icon_arrow_down); }else { mImageView.setBackgroundResource(R.drawable.icon_arrow_up); } Log.i("zj", "onDismiss"); } }); } }); } private ArrayList<HashMap<String, Object>> createData(){ HashMap<String, Object> map1 = new HashMap<String, Object>(); map1.put("zj", "美食"); HashMap<String, Object> map2 = new HashMap<String, Object>(); map2.put("zj", "娛樂"); HashMap<String, Object> map3 = new HashMap<String, Object>(); map3.put("zj", "購物"); HashMap<String, Object> map4 = new HashMap<String, Object>(); map4.put("zj", "電影"); ArrayList<HashMap<String, Object>> _ArrayList = new ArrayList<HashMap<String,Object>>(); _ArrayList.add(map1); _ArrayList.add(map2); _ArrayList.add(map3); _ArrayList.add(map4); return _ArrayList; } class MyListOnItemClick implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub HashMap<String, Object> temp = mArrayList.get(arg2); mPopupWindow.dismiss(); Toast.makeText(MainActivity.this, temp.get("zj").toString(), 1).show(); } } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <HorizontalScrollView android:layout_width="match_parent" android:layout_height="50dp" android:fadingEdge="@null" android:scrollbars="none" android:background="#555555" android:id="@+id/horizontalScrollView" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#33b5e5" > <RadioGroup android:id="@+id/radioGroup" android:layout_width="fill_parent" android:layout_height="49dp" android:orientation="horizontal" android:layout_alignParentTop="true" > <RadioButton style="@style/radioButton" android:text="one" android:id="@+id/btn1" /> <RadioButton style="@style/radioButton" android:text="two" android:id="@+id/btn2" /> <RadioButton style="@style/radioButton" android:text="three" android:id="@+id/btn3" /> <RadioButton style="@style/radioButton" android:text="four" android:id="@+id/btn4" /> <RadioButton style="@style/radioButton" android:text="five" android:id="@+id/btn5" /> </RadioGroup> <ImageView android:id="@+id/img1" android:layout_width="100dp" android:layout_height="4dp" android:background="#33b5e5" android:layout_alignParentBottom="true" /> </RelativeLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
http://zhengjiong.iteye.com/blog/1539951