Autore Topic: Custom View nell'xml  (Letto 546 volte)

Offline superrossini

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus s
  • Sistema operativo:
    Windows 7
Custom View nell'xml
« il: 01 Maggio 2012, 16:15:52 CEST »
0
Salve,
sto provando a creare una mia edittext estendendo appunto EditText:

Codice (Java): [Seleziona]
package prova.test.customview;

public class MyEditText extends EditText {

        private Rect mRect;
        private Paint mPaint;

        public MyEditText(Context context) {
                super(context);

                mRect = new Rect();
                mPaint = new Paint();
                mPaint.setStyle(Paint.Style.STROKE);
                mPaint.setColor(0x800000FF);
        }

        @Override
        protected void onDraw(Canvas canvas) {

                int count = getLineCount();

                Rect r = mRect;
                Paint paint = mPaint;

                /*
                 * Draws one line in the rectangle for every line of text in the
                 * EditText
                 */

                for (int i = 0; i < count; i++) {

                        // Gets the baseline coordinates for the current line of text
                        int baseline = getLineBounds(i, r);

                        /*
                         * Draws a line in the background from the left of the rectangle to
                         * the right, at a vertical position one dip below the baseline,
                         * using the "paint" object for details.
                         */

                        canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
                }

                // Finishes up by calling the parent method
                super.onDraw(canvas);
        }
}

il mio problema è inserirla nel xml ... ho provato con
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/prova.test.customview"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

    <prova.test.customview.MyEditText
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

</LinearLayout>

..ma niente non funziona

05-01 14:12:34.194: E/AndroidRuntime(309): java.lang.RuntimeException: Unable to start activity ComponentInfo{prova.test.costumedittext/prova.test.customview.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class prova.test.customview.MyEditText

... dove sbaglio?

Offline superrossini

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus s
  • Sistema operativo:
    Windows 7
Re:Custom View nell'xml
« Risposta #1 il: 01 Maggio 2012, 17:25:04 CEST »
0
mi rispondo da solo,
ho modificato il costruttore in

Codice (Java): [Seleziona]
public MyEditText(Context context, AttributeSet attrs) {
                super(context, attrs);

                ...
}

e funziona,
a quanto pare richiamando la custom view dal xml gli passa anche AttributeSet, per questo mi dava errore...

adesso vorrei solo capire a cosa serve

Codice (XML): [Seleziona]
xmlns:custom="http://schemas.android.com/apk/res/prova.test.customview"
perchè che lo metta o no funziona lo stesso

Offline superrossini

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus s
  • Sistema operativo:
    Windows 7
Re:Custom View nell'xml
« Risposta #2 il: 01 Maggio 2012, 17:44:13 CEST »
0
mi rispondo da solo anche qui  :-)
... funziona lo stesso perchè non sono stati utilizzati attributi personalizzati, quindi non serve aggiungere il namespace custom,

spero di non aver detto stupidaggini,
TOPIC RISOLTO ... (da solo)

spero serva a qualcuno