Readdy Write

Android : Zur Laufzeit ein Eingabefeld erstellen mit Breite und Hintergrund

27.09.2018 (👁6514)


Wie kann man zur Laufzeit ein Eingabefeld erstellen, bei welchem der Hintergrund farblich vorgegeben wird und die Breite eingestellt wird.

Lösung:

Über für den Hintergrund erstellt man ein Drawable Style.

Dieses drawable weist man dann mit EditView.setBackground(drawablename) zu.

Für die Breite kann man dann mit EditView.setWidth(123) die Standardbreite einstellen

Java code, runtime

Kompletter Code zum Erstellen eines Eingabefeldes EditView zur Laufzeit

public void set_Input(View view) {
   
//------------< set_Input() >-----------
   
TableRow row =(TableRow) view;
   
row_Input=row;
    String sRow_Key =view.getTag().toString();
   
sDateShort_Input=  sRow_Key.substring(4);
   
   
//< get_Edit_Field >
   
EditText tbxDate_Input=row.findViewWithTag("edit_" + sDateShort_Input);
   
if(tbxDate_Input ==null)
    {
       
//-< add_new_Edit >-
       
tbxDate_Input=new EditText(this);
        tbxDate_Input.setTextColor(Color.
RED);
        Drawable edStyle=getDrawable(R.drawable.
input_date_style);
        tbxDate_Input.setBackground(edStyle);
        tbxDate_Input.setWidth(
180);
        row.addView(tbxDate_Input);
       
//-</ add_new_Edit >-
   
}
    tbxDate_Input.requestFocus();
   
//</ get_Edit_Field >

    //------------</ set_Input() >-----------
}

Drawable

Im Drawable File wird ein Darstellungs-Style ausgelagert.

Man muss nur die Datei in den Pfad res/drawable stellen, wodurch dieser dann mit

getDrawable(R.drawable.filename) gefunden werden kann

Res/drawable/

input_date_style.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <
item>
        <
shape android:shape="rectangle">
            <
solid android:color="#EEFFFF00"/>
            <
stroke
               
android:color="#a0a32f"
               
android:width="1dp"
               
/>
            <
corners android:radius="1dp"/>
        </
shape>
    </
item>
</
selector>

 

 


0,00 €