您的位置:首页 > 移动开发 > Android开发

android 自定义小数软键盘

2014-10-16 17:48 363 查看
admin.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#A2B5CD"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/buttonbar"
style="@android:style/ButtonBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/btn_0"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="0"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="1"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="2"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="3"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="4"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="5"
android:textColor="@color/text_color" />
</LinearLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/btn_6"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="6"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_7"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="7"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_8"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="8"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_9"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="9"
android:textColor="@color/text_color" />

<Button
android:id="@+id/btn_dian"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="."
android:textColor="@color/text_color" />
<Button
android:id="@+id/btn_del"
android:layout_width="0dp"
android:layout_height="35.0dip"
android:layout_weight="1"
android:text="删除"
android:textColor="@color/text_color" />
</LinearLayout>

</LinearLayout>

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/buttonbar" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp" >

<EditText
android:id="@+id/et1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"

android:maxLength="15" />

<EditText
android:id="@+id/et2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_weight="7"
android:inputType="numberDecimal"
android:maxLength="15" />
<pre name="code" class="html">                <EditText
android:id="@+id/et3"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_weight="7"
android:inputType="numberDecimal"
android:maxLength="15" />
</LinearLayout> </ScrollView></RelativeLayout>


mainActivity.java

EditText etz[];
private int et_r[] = { R.id.et1, R.id.et2, R.id.et3};
private Button btn[];
private int btn_r[] = { R.id.btn_0, R.id.btn_1, R.id.btn_2, R.id.btn_3,
R.id.btn_4, R.id.btn_5, R.id.btn_6, R.id.btn_7, R.id.btn_8,
R.id.btn_9, R.id.btn_dian, R.id.btn_del };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.admin);

etz = new EditText[et_r.length];
// 不弹出软键盘有光标
for (int i = 0; i < etz.length; i++) {
etz[i] = (EditText) findViewById(et_r[i]);
srfpb(etz[i]);
}

btn = new Button[btn_r.length];
for (int i = 0; i < btn.length; i++) {
btn[i] = (Button) findViewById(btn_r[i]);
btn[i].setOnClickListener(new OnClickListener() {
public void onClick(View v) {

Button b = (Button) findViewById(v.getId());
EditText edittext = null;
// View et;
// View focusView = getCurrentFocus();
// et = focusView.findFocus();
// EditText ed = (EditText) findViewById(et.getId());
// ed.setText(b.getText());
for (int i = 0; i < etz.length; i++) {
if (etz[i].hasFocus()) {
edittext = etz[i];
break;
}
}
if (edittext != null) {
int index = edittext.getSelectionStart();// 获取光标所在位置
Editable edit = edittext.getEditableText();// 获取EditText的文字
if (v.getId() == R.id.btn_del) {
if (index > 0) {
edit.delete(index - 1, index); // 删除光标前字符
}
} else {
if (v.getId() == R.id.btn_dian) {
char[] carr = edit.toString().toCharArray();
int k = 0;
for (int i = 0; i < edit.toString().length(); i++) {
if (carr[i] == '.') {
k = 1;
break;
}
}
if (k == 1)
return;
}
if (index < 0 || index >= edit.length()) {
edit.append(b.getText());
} else {
edit.insert(index, b.getText());// 光标所在位置插入文字
}
}
}
}

});

}

}

/** 输入法软键盘屏蔽,有光标 */
private void srfpb(EditText text) {
if (android.os.Build.VERSION.SDK_INT <= 10) {// 4.0以下
text.setInputType(InputType.TYPE_NULL);
4000

} else {
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class<EditText> cls = EditText.class;
Method setSoftInputShownOnFocus;
setSoftInputShownOnFocus = cls.getMethod(
"setSoftInputShownOnFocus", boolean.class);
setSoftInputShownOnFocus.setAccessible(true);
setSoftInputShownOnFocus.invoke(text, false);
} catch (Exception e) {
e.printStackTrace();
}
try {
Class<EditText> cls = EditText.class;
Method setShowSoftInputOnFocus;
setShowSoftInputOnFocus = cls.getMethod(
"setShowSoftInputOnFocus", boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(text, false);
} catch (Exception e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 输入法 小数