我创建了这个生成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 :(得分:0)
您应该覆盖EditText的OnTouchListener以显示键盘而不是默认键盘。确保在OnTouchListener中返回true以在EditText弹出键盘之前使用触摸事件。
如果你想制作一个模仿默认键盘的自定义键盘,我建议你看一下Android itself中的一些代码/布局。