http://www.myexception.cn/android/1346620.html


android弹出选择对话框-仿某团购网android客户端栏目选择

效果图一:
android弹出抉择对话框-仿某团购网android客户端栏目选择_第1张图片
效果图二:

android弹出抉择对话框-仿某团购网android客户端栏目选择_第2张图片

未完善,还比较简单:

弹出对话框,先只显示左边列表,右边列表需要宽度设置为0,用visiable会影响使用。

选中左边列表时,再根据数据情况展现右边或者是选中提交。

PopupCategory.java

package com.example.ysq.activity;import java.util.ArrayList;import java.util.List;import com.example.ysq.R;import com.example.ysq.adapter.CategoryAdapter;import com.example.ysq.entity.CategoryEntity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.WindowManager;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.LinearLayout.LayoutParams;import android.widget.ListView;import roboguice.fragment.RoboDialogFragment;import roboguice.inject.InjectView;public class PopupCategory extends RoboDialogFragment{@InjectView(R.id.rootcategory)private ListView rootcategory;@InjectView(R.id.childcategory)private ListView childcategory;@InjectView(R.id.child_lay)private View child_lay;private Window window;public int x,y;@Overridepublic void onActivityCreated(Bundle savedInstanceState){super.onActivityCreated(savedInstanceState);this.rootcategory.setDrawSelectorOnTop(true);    this.rootcategory.setVerticalScrollBarEnabled(false);    this.childcategory.setDrawSelectorOnTop(true);    this.childcategory.setVerticalScrollBarEnabled(false);        final List<CategoryEntity> data=new ArrayList<CategoryEntity>();    for(int i=0;i<20;i++){    CategoryEntity e=new CategoryEntity();    data.add(e);    e.setSeq(i);    e.setCount(i%3);    e.setName("测试"+i);    List<CategoryEntity> childList=new ArrayList<CategoryEntity>();    e.setChildList(childList);    for(int j=0;j<e.getCount();j++){    CategoryEntity ce=new CategoryEntity();    childList.add(ce);    ce.setSeq(j);    ce.setCount(j);    ce.setName("子目录"+i+":"+j);    }    }    final CategoryAdapter adapter=new CategoryAdapter(getActivity(), data, R.layout.category_item);    rootcategory.setAdapter(adapter);    final CategoryAdapter childadapter=new CategoryAdapter(getActivity(), new ArrayList<CategoryEntity>(), R.layout.category_child_item);    childcategory.setAdapter(childadapter);    rootcategory.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {//用下面getChildAt会报异常,因为这个只能在手机屏幕可视范围内能获取到,超出返回null//View v;//Log.e("i:", parent.getCount()+"");//Log.e("i:", parent.getChildCount()+"");//for (int i = 0; i < parent.getChildCount(); i++) {//Log.e("i:", i+"");//v = parent.getChildAt(i);//if (position == i) {//v.setBackgroundColor(Color.argb(153, 0, 186, 255));//} else {//v.setBackgroundColor(Color.TRANSPARENT);//}//}adapter.setFocus(position);CategoryEntity category=data.get(position);List<CategoryEntity> childList=category.getChildList();if(childList.size()>0){childadapter.setData(childList);WindowManager.LayoutParams localLayoutParams;localLayoutParams=window.getAttributes();localLayoutParams.width = (int)(width-localLayoutParams.x*2);localLayoutParams.height = (int)(height-localLayoutParams.y*2);window.setAttributes(localLayoutParams);LayoutParams params=new LayoutParams((int)(width/2-localLayoutParams.x),localLayoutParams.height);    child_lay.setLayoutParams(params);}else{//todo:PopupCategory.this.dismiss();}}});        childcategory.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {PopupCategory.this.dismiss();}    });    //    child_lay.setVisibility(View.INVISIBLE);    //设置宽度高度    LayoutParams params=new LayoutParams(0, 0);    child_lay.setLayoutParams(params);}private int height;private int width;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {window = this.getDialog().getWindow();WindowManager.LayoutParams localLayoutParams;window.setWindowAnimations(R.style.push_top);window.setBackgroundDrawableResource(R.drawable.bg_category);localLayoutParams=window.getAttributes();localLayoutParams.gravity=Gravity.TOP|Gravity.LEFT;localLayoutParams.x=this.x;localLayoutParams.y=this.y;window.addFlags(Window.FEATURE_PROGRESS);localLayoutParams.dimAmount=0.6F;DisplayMetrics displaymetrics = new DisplayMetrics();this.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);height = displaymetrics.heightPixels;width = displaymetrics.widthPixels;localLayoutParams.width = (int)(width/2-localLayoutParams.x);localLayoutParams.height = (int)(height-localLayoutParams.y*2);window.setAttributes(localLayoutParams);this.setCancelable(true);this.getDialog().setCanceledOnTouchOutside(true);View localView = inflater.inflate(R.layout.popup_category, container, false);return localView;}}

CategoryAdapter.java

package com.example.ysq.adapter;import java.util.List;import com.example.ysq.R;import com.example.ysq.entity.CategoryEntity;import android.content.Context;import android.graphics.Color;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class CategoryAdapter extends BaseAdapter {private List<CategoryEntity> entityList;private LayoutInflater inflater;private int itemViewResource;private int index = 0;public CategoryAdapter(Context paramContext, List<CategoryEntity> entityList, int itemViewResource) {this.inflater = ((LayoutInflater) paramContext.getSystemService("layout_inflater"));this.entityList = entityList;this.itemViewResource = itemViewResource;}public void setData(List<CategoryEntity> paramList){this.entityList=paramList;notifyDataSetChanged();}private CategoryEntity b(int paramInt) {return (CategoryEntity) this.entityList.get(paramInt);}public final void setFocus(int index ) {this.index  = index ;notifyDataSetChanged();}public final int getCount() {if (isNull(this.entityList))return 0;return this.entityList.size();}public final long getItemId(int paramInt) {return paramInt;}public final View getView(int paramInt, View paramView,ViewGroup paramViewGroup) {CategoryEntity localwk = b(paramInt);ListItemView itemView;    if (paramView == null)    {      paramView = this.inflater.inflate(this.itemViewResource, paramViewGroup, false);      itemView = new ListItemView();      itemView.name = ((TextView)paramView.findViewById(R.id.name));      itemView.count = ((TextView)paramView.findViewById(R.id.count));      itemView.haschild = ((ImageView)paramView.findViewById(R.id.haschild));      paramView.setTag(itemView);    }else{    itemView = (ListItemView)paramView.getTag();    }    if(this.itemViewResource==R.layout.category_item){//父结构    if(localwk.getSeq()==this.index){    paramView.setBackgroundColor(Color.argb(255,234,234,234));//#ffeaeaea    }else{    paramView.setBackgroundDrawable(null);    }    }        itemView.name.setText(localwk.getName());      if (localwk.getCount() != -1)      itemView.count.setText(String.valueOf(localwk.getCount()));            if (isNull(localwk.getChildList()))      itemView.haschild.setVisibility(View.INVISIBLE);      else      itemView.haschild.setVisibility(View.VISIBLE);          return paramView;}static class ListItemView{  TextView name;  TextView count;  public ImageView haschild;}public <T> boolean isNull(List<T> paramList) {return (paramList == null) || (paramList.isEmpty());}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}}


更多相关文章

  1. Android UI学习 - 对话框 (AlertDialog & ProgressDialog)
  2. Android 中文 API ——对话框 AlertDialog.Builder
  3. android 启动默认的邮件客户端,多附件的问题
  4. 服务器端返回给客户端的数据格式
  5. Android自定义View(1):对话框-Dialog
  6. android组件化方案、二维码扫码、Kotlin新闻客户端、动画特效等
  7. android ftp 客户端编写(ftp4j)

随机推荐

  1. 长征火箭残骸坠落湖南 砸坏民宅和高压线
  2. 为什么从HTML的select控件中获得的值为空
  3. android 中的线性布局与相对布局
  4. 如何将这些Twitter bootstrap 3导航栏链
  5. Ubuntu的FireFox无法使用HTML5播放器的解
  6. 使用HTML5 canvas做地图(3)图片加载平移放
  7. html——ul、li导航栏居中的两种办法
  8. 如何使用CSS精灵重复背景图像?
  9. 前端html数组去重的方法
  10. 多文件拖拽上传以及利用Jquery替代HTML5