Bawię się androidem ostatnio, i klawiatura systemowa, mi się trochę nie podoba. Chciałbym w programie, mieć własną klawiaturę, którą zacząłem robić.
package com.example.keyboard.app;
import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
public class MainActivity extends ActionBarActivity
{
EditText et[] = new EditText[4];
Button btn[][] = new Button[2][5];
int tab[] = {0,0,0};
int id_button=0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int size;
size = ((width - 8)/5);
TableLayout tl;
tl = (TableLayout) findViewById(R.id.layout);
TableRow tr[] = new TableRow[4];
Button button = new Button(this);
int val = 0;
for(int i=0; i<2; i++)
{
tr[i] = new TableRow(this);
tr[i].setPadding(0, 0, 0, 2);
tl.addView(tr[i]);
for(int j=0; j<5; j++)
{
int id = val++;
btn[i][j] = new Button(this);
btn[i][j].setBackgroundColor(Color.rgb(60, 70, 80));
btn[i][j].setText(String.valueOf(id));
btn[i][j].setId(id);
final int ii=i;
final int jj=j;
btn[i][j].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
for(int licznik=0; licznik<4; licznik++)
{
if(id_button==licznik)
{
et[licznik].setText(String.valueOf(btn[ii][jj].getText()));
}
}
}
});
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.height = size;
params.width = size;
params.setMargins(0,0,2,0);
btn[i][j].setLayoutParams(params);
tr[i].addView(btn[i][j]);
}
}
for(int k=0; k<4; k++)
{
et[k]=new EditText(this);
et[k].setInputType(InputType.TYPE_NULL);
final int kk =k;
et[k].setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent motionEvent)
{
id_button=kk;
return false;
}
});
tl.addView(et[k]);
}
button.setText("add");
tl.addView(button);
View.OnClickListener button_add = new View.OnClickListener()
{
@Override
public void onClick(View view)
{
add();
}
//takie tam liczenie średniej z 3 liczb.
private void add()
{
int a, b, c;
a=b=c=0;
double sr;
if(et[0].getText().toString().length()!=0)
{
a = Integer.parseInt(et[0].getText().toString());
}
if(et[1].getText().toString().length()!=0)
{
b = Integer.parseInt(et[1].getText().toString());
}
if(et[2].getText().toString().length()!=0)
{
c = Integer.parseInt(et[2].getText().toString());
}
sr = (double)(a+b+c)/3;
et[3].setText(String.valueOf(sr));
}
};
button.setOnClickListener(button_add);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Co dalej zrobić aby po kliknięciu w pole edittext np. et[1], móc tam wpisać wartość(tylko cyfry) za pomocą buttonów. Po kliknięciu w innego edittexta powiedzmy et[2], powinna tam się znaleźć cyfra, którą wybierzemy za pomocą buttonów.