如何在我的应用程序中显示我创建的键盘,而不是默认键盘

时间:2012-08-07 14:37:41

标签: android android-layout android-intent android-widget

我创建了这个生成EditText表的应用程序。 这是布局中隔参数的代码部分。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.seconda);

Bundle extras = getIntent().getExtras();
N = extras.getInt("dim_matrice");//dimensione della matrice
setKeys();
values = new EditText[N][N];
salvatore = new EditText[N*N];

FrameLayout frameLayout = new FrameLayout(this);
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
HorizontalScrollView HSC = new HorizontalScrollView(this);
HSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));
frameLayout.setBackgroundResource(R.drawable.lavagna);        
ScrollView VSC = new ScrollView(this);
VSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
TableLayout tableLayout = new TableLayout(this);
tableLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  


for ( int i = 0; i < N; i++) {
tableRow = new TableRow(this); 
tableRow.setGravity(Gravity.CENTER);

for (int j = 0; j < N; j++) {
values[i][j] = new EditText(this);
values[i][j].setHint(i1 + "   " + j1);
values[i][j].setPadding(10, 10, 10, 10);
salvatore[sal] = valore[i][j];
tableRow.addView(valore[i][j]);
j1++;
if (j1 == (N+1)){
j1 = 1;
}
sal++;
}

tableLayout.addView(tableRow);

i1++;
if (i1 == (N+1)){
i1 = 1;
}

}

for (i=0;i<N*N;i++){
InputMethodManager imm = (InputMethodManager)getSystemService(
               Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(salvatore[i].getWindowToken(), 0);
salvatore[i].setInputType(0);
salvatore[i].setOnTouchListener(this);
salvatore[i].setOnClickListener(this);
hideDefaultKeyboard();
enableKeyboard();

}


VSC.addView(tableLayout);
HSC.addView(VSC);
frameLayout.addView(HSC);
setContentView(frameLayout);

此代码显示以屏幕为中心的EditText表。 此应用程序关闭默认键盘以激活我单独创建的我的。 这是我将键盘包含在relativeLayout中的代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/xK1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:screenOrientation="portrait" >

<include android:id="@+id/xKeyBoard" layout="@layout/keyboard"></include>

</RelativeLayout>

我希望键盘的显示与默认显示相同。 所以我想将它正确地包含在布局法中。

1 个答案:

答案 0 :(得分:0)

您应该覆盖EditText的OnTouchListener以显示键盘而不是默认键盘。确保在OnTouchListener中返回true以在EditText弹出键盘之前使用触摸事件。

如果你想制作一个模仿默认键盘的自定义键盘,我建议你看一下Android itself中的一些代码/布局。