Wie erstellt man in Android Linien in einer Tabelle?
Beim einfachen Erstellen einer Tabelle in Android werden
keine Rahmen gezeichnet.
Tabellen in Android:
Tabellen bestehen in Android aus einem TableLayout und
TableRows. Alle Zellen werden durch den Inneren Layout Aufbau gestaltet.
In diesem Code Beispiel werden Rahmen um die Tabellen-Reihen
erzeugt.
Lösung:
Man erstellt Rahmen um Zellen und Reihen, indem man ein
Drawable-Zeichen-Element in den Hintergrund lädt.
Drawable
Unter app/res/drawable erstellt man eine neue Drawable Datei
und legt dort ein android:shape vom Typ:Rectangle
an.
Diesen Hintergrund lädt man dann zur Laufzeit programmatisch
in die Tabellen-Zeile oder auch in View Elemente und Zellen.
<?xml version="1.0"
encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle">
<padding
android:bottom="0dp"
android:top="0dp"
></padding>
<stroke android:width="1px"
android:color="#000000"/>
</shape>
|
Android Java
Laufzeit Code, programmiert
App/java/project,package/CalendarActivity,
Activity
Das Hintergrund-Zeichenobjekt wird mit row.setBackground(Drawable)
zur Laufzeit geladen
//--< Row >--
TableRow row = new TableRow(this);
//< set Border >
row.setBackground(ContextCompat.getDrawable(context, R.drawable.border));
//*not:
TableRow.LayoutParams lp=new
TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.MATCH_PARENT);
//*not: row.setPadding(1,1,1,1);
//</ set Border >
|
Referenz
Kompletter Android Java Code
für Tabelle
TableLayout tbl = new TableLayout(this);
tbl.setMinimumWidth(300);
//tbl.setBackgroundResource(R.drawable.rectangle);
//</ Header >
//----< @Loop: Days >----
for (int iDay = 1; iDay <= 31; iDay++) {
//----< Day-Row >----
//-< Date >-
Date dtRow = clsDate.getDate_by_Year_Month_Day(Calendar_Year,
Calendar_Month, iDay);
//< weekday >
//*as string
SimpleDateFormat fmtWeekday = new SimpleDateFormat("EE");
String weekday =
fmtWeekday.format(dtRow);
//</ weekday >
//*as weekday_number
Calendar calendarDay = Calendar.getInstance();
calendarDay.setTime(dtRow);
int NrWeekday =
calendarDay.get(Calendar.DAY_OF_WEEK);// fmtWeekdayNr.format(dtRow);
//-</ Date >-
//--< Row >--
TableRow row = new TableRow(this);
//< set Border >
row.setBackground(ContextCompat.getDrawable(context, R.drawable.border));
//not: TableRow.LayoutParams lp=new
TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.MATCH_PARENT);
//not: row.setPadding(1,1,1,1);
//</ set Border >
if (NrWeekday == Calendar.SATURDAY || NrWeekday == Calendar.SUNDAY) {
row.setBackgroundColor(Color.rgb(200, 200, 200));
}
if (dtRow.equals(_dtToday)) {
row.setBackgroundColor(Color.rgb(200, 0, 0));
}
//< dayNr >
TextView lblDayNr = new TextView(this);
lblDayNr.setText(String.valueOf(iDay)); //*cast integer to string
row.addView(lblDayNr);
//</ dayNr >
//--< weekday >--
TextView lblWeekday = new TextView(this);
lblWeekday.setText(weekday);
row.addView(lblWeekday);
//--</ weekday >--
row.setOnClickListener(on_Day_Row_Clicked);
//< set_keyTag >
String sDateRow = clsDate.format_to_ShortDate(dtRow);
row.setTag("row_" + sDateRow);
//</ set_keyTag >
//--</ Row >--
//< add to table >
tbl.addView(row);
//</ add to table >
//----</ Day-Row >----
}
|
Betrifft: TableRow Reihe, Zelle?