GridView+PopupWindow自定义数字键盘

public class SimpleGridViewTest extends Activity {
EditText editText;
private PopupWindow popupWindow;
private GridView mGridView;
private View contentview;
private List<String> datas = new ArrayList<String>();
GridViewAdapter adapter;
private static String editNum = "";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);
    editText = (EditText) findViewById(R.id.editText);
    initData();
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    contentview = inflater.inflate(R.layout.simple_grid_view_test, null);
    popupWindow = new PopupWindow(contentview, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setFocusable(true);
    popupWindow.setOutsideTouchable(false);
    mGridView = (GridView) contentview.findViewById(R.id.gridview);
    adapter = new GridViewAdapter(this, R.layout.grid_view_item, datas);
    mGridView.setAdapter(adapter);
    mGridView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String s = datas.get(position);
            Toast.makeText(SimpleGridViewTest.this, "xuan" + position, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
    mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String num = editText.getText().toString().trim();
            editNum = datas.get(position);
            if (editNum.equals("OK")) {
                editText.setText(editText.getText().toString().trim());
                popupWindow.dismiss();
            } else if (editNum.equals("")) {
                if (num.length() > 0) {
                    editText.setText(num.substring(0, num.length() - 1));
                    editText.setSelection(editText.getText().length());
                }
            } else {
                editText.setText(editText.getText().toString().trim() + datas.get(position));
                editText.setSelection(editText.getText().length());
            }

// Toast.makeText(SimpleGridViewTest.this,"dian"+position,Toast.LENGTH_SHORT).show();
}
});

    // 设置不调用系统键盘
    if (Build.VERSION.SDK_INT <= 10) {
        editText.setInputType(InputType.TYPE_NULL);
    } else {
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        try {
            Class<EditText> cls = EditText.class;
            Method setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
            setShowSoftInputOnFocus.setAccessible(true);
            setShowSoftInputOnFocus.invoke(editText, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    editText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            popupWindow.showAsDropDown(editText);
        }
    });
}
@Override
public void onBackPressed() {       //点击返回按钮
    if (popupWindow.isShowing()) {
        popupWindow.dismiss();
        return;
    }
    super.onBackPressed();
}
// 填充数据
private void initData() {
    for (int i = 0; i < 12; i++) {
        if (i < 3) {
            datas.add(String.valueOf(i + 1));
        } else if (i > 3 && i < 7) {
            datas.add(String.valueOf(i));
        } else if (i > 7 && i < 11) {
            datas.add(String.valueOf(i - 1));
        } else if (i == 3) {
            datas.add("OK");
        } else if (i == 11) {
            datas.add("0");
        } else {
            datas.add("");
        }
    }
}

}

原文地址:http://blog.51cto.com/13498753/2105316

时间: 2024-10-17 16:07:40

GridView+PopupWindow自定义数字键盘的相关文章

Android 自定义数字键盘

业务需求自定义数字键盘,写了一个demo 主要代码: import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; import android.vi

一个高仿闲鱼键自定义数字键盘特效

博客地址: http://www.jianshu.com/p/be68facfc4b8 仿造android端闲鱼发布选择价格数字键盘,自定义数字键盘 public class MyKeyBoardView extends KeyboardView { private Context mContext; private Keyboard mKeyBoard; public MyKeyBoardView(Context context, AttributeSet attrs) { super(con

自定义数字键盘组件化方案

实现场景:点击输入框,弹出自定义数字键盘,输入数字后点击确定,输入框中显示对应数字.如果输入框中有值,则默认带到小键盘中. 其中:数字键盘为子组件.输入框公用该子组件. 效果图如下: 难点: 1.props传入数字键盘组件中的值,无法直接修改.需要通过计算属性进行修改. 2.公用键盘时,保证符合预期,数字不会错乱.使用v-for,巧用name属性,通过点击时更改传入的参数,达到目的. 下面时完整代码: index.vue <template> <view class="cont

iOS自定义数字键盘

自定义键盘实际就是设置UITextField的inputView属性,首先我们要做的是自定义一个UIView,实现键盘的样式. 自定义View代码如下: 1 #import <UIKit/UIKit.h> 2 //创建自定义键盘协议 3 @protocol My_KeyBoardDelegate <NSObject> 4 //创建协议方法 5 @required//必须执行的方法 6 - (void)numberKeyBoard:(NSInteger) number; 7 - (v

GridLayout自定义数字键盘(两个EditText)

功能说明: 适用于两个EditText输入框,并控制输入字符的长度,点击键盘中的"确定"按钮完成输入,点击"前一项"光标跳到前一个EditText 运行效果图如下: 布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

html5自定义数字键盘

原理:使用div模拟输入框,避免手机原生键盘弹出,键盘使用div模拟,点击事件使用js控制,光标闪烁使用css模拟,具体代码如下: 1 <!doctype html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,ch

Android 自定义的数字键盘 支持随意拖动 和稳定的字符输入的控件

经过 研究 实现了自定义 键盘 ,支持随意拖动 和数字及其他字符输入 下面是主要的代码 和使用方法 import android.content.Context; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Gravity; import android.view.Mo

iOS数字键盘自定义按键

UIKeyboardTypeNumberPad 数字键盘自定义按键 最近做一个搜索用户的功能,这里使用了UISearchBar.由于搜索的方式只有手机号码,所以这里的键盘要限制为数字输入,可以这么做: self.searchBar.keyboardType = UIKeyboardTypeNumberPad; 如果使用的不是搜索框而是textField输入框,可以设置textField的键盘属性来展示 self.textField.keyboardType = UIKeyboardTypeNum

简单自定义安全键盘(只能输入字母,数字,部分符号)

以前知道有个KeyboardView这个东西可以自定义键盘,但因为一直没涉及到,所以没研究过,今天看到工商银行密码输入的键盘觉得挺好看,就来研究一下. 先看一下工商银行的图 下边是我的效果图 参考了:http://blog.csdn.net/hfsu0419/article/details/7924673 http://www.cnblogs.com/jason-star/archive/2012/12/15/2819174.html 两篇博客. 现在做一下笔记. 在需要显示键盘的布局中,插入这