2012-08-07 40 views
0

我创建了此应用程序,该应用程序生成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> 

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

回答

0

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

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

+0

我的问题不是启用我的自定义键盘,而是将此键盘插入到我的应用程序的framelayout中 – whiteTIGER 2012-08-07 15:49:00

相关问题