Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Android: Tabellen Linien zeichnen

05.10.2018 (👁9726)


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?