Hallo,
ich erstelle gerade eine Tabelle. Anfangs besteht sie nur aus einer Spalte aus TextView's. Diese sind ohne Lücke untereinander. Wenn dann die EditText's dazu kommen, dann entstehen Lücken zwischen den TextView's. Bitte schaut euch dazu die Bilder im Anhang an.
Das das EditText beim Name kleiner ist, das beachtet bitte nicht!
Ich habe die Höhe jeder TableRow fest gelegt (auf einen festen int-wert).
Und: Höhe-der-Reihe == Höhe-der-TextViews == Höhe-der-EditText's
Wenn ihr den Code braucht:
Hab den Code (noch) nicht auskommentiert, wenn ihr Fragen habt meldet euch!
Auch der Platz der (schon ohne die EditText's) zwischen dem bildschirmrand und den TextViews ist stört mich und ich weiß nicht woher er kommt.
Danke für das Lesen und Interesse und bitte meldet euch wenn ihr etwas wisst!
ich erstelle gerade eine Tabelle. Anfangs besteht sie nur aus einer Spalte aus TextView's. Diese sind ohne Lücke untereinander. Wenn dann die EditText's dazu kommen, dann entstehen Lücken zwischen den TextView's. Bitte schaut euch dazu die Bilder im Anhang an.
Das das EditText beim Name kleiner ist, das beachtet bitte nicht!
Ich habe die Höhe jeder TableRow fest gelegt (auf einen festen int-wert).
Und: Höhe-der-Reihe == Höhe-der-TextViews == Höhe-der-EditText's
Wenn ihr den Code braucht:
Java:
public class MainActivity extends Activity {
private TableLayout tl;
private TableRow tr[] = new TableRow[21];
private Point size;
private int weite;
private int hoehe;
private int textGroesse;
private int farbeName;
private int farbeErg;
private int farbe1Bahn;
private int farbeAsse;
private int farbe2Bahn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initialisiere();
erstelleErsteSpalte();
// erstelleNeueSpalte();
}
private void erstelleErsteSpalte() {
for (int i = 0; i < 21; i++) {
tr[i] = new TableRow(this);
tr[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, hoehe));
tl.addView(tr[i]);
}
tr[0].addView(erstelleTV("Name:", farbeName));
for (int i = 1; i <= 18; i++) {
tr[i].addView(erstelleTV("Bahn " + i + ":", i % 2 == 0 ? farbe1Bahn : farbe2Bahn));
}
tr[19].addView(erstelleTV("Ergebnis:", farbeErg));
tr[20].addView(erstelleTV("Asse:", farbeAsse));
}
private TextView erstelleTV(String text, int rgb) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setWidth(weite);
tv.setHeight(hoehe);
tv.setTextSize(textGroesse);
tv.setBackgroundColor(rgb);
return tv;
}
private void initialisiere() {
setContentView(R.layout.activity_main);
farbeName = Color.rgb(100, 200, 100);
farbeErg = Color.rgb(255, 255, 0);
farbeAsse = Color.rgb(150, 255, 150);
farbe1Bahn = Color.rgb(155, 155, 155);
farbe2Bahn = Color.rgb(205, 205, 205);
Display display = getWindowManager().getDefaultDisplay();
size = new Point();
display.getSize(size);
tl = (TableLayout) findViewById(R.id.tl);
tl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
erstelleNeueSpalte();
}
});
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
weite = (int) (size.x / 5);
hoehe = (int) (size.y / 21);
textGroesse = (int) (size.y / 32);
}
private void erstelleNeueSpalte() {
EditText et = new EditText(this);
et.setBackgroundColor(farbeName);
tr[0].addView(et);
for (int i = 1; i <= 18; i++) {
tr[i].addView(erstelleET(true, i % 2 == 0 ? farbe1Bahn : farbe2Bahn));
}
tr[19].addView(erstelleET(false, farbeErg));
tr[20].addView(erstelleET(false, farbeAsse));
}
private EditText erstelleET(boolean enabled, int rgb) {
EditText et = new EditText(this);
et.setBackgroundColor(rgb);
et.setWidth(weite);
et.setHeight(hoehe);
et.setTextSize(textGroesse);
et.setKeyListener(new NumberKeyListener() {
@Override
protected char[] getAcceptedChars() {
char numberChars[] = {'1','2','3','4','5','6','7'};
return numberChars;
}
@Override
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER;
}
});
et.setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)});
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void afterTextChanged(Editable s) {
zeigeNeuesErgebnis();
}
});
et.setEnabled(enabled);
return et;
}
private void zeigeNeuesErgebnis() {
}
// @Override
// public boolean onTouchEvent(MotionEvent e) {
// return true;
// }
}
Auch der Platz der (schon ohne die EditText's) zwischen dem bildschirmrand und den TextViews ist stört mich und ich weiß nicht woher er kommt.
Danke für das Lesen und Interesse und bitte meldet euch wenn ihr etwas wisst!
Anhänge
Zuletzt bearbeitet: