Autore Topic: Attivazione di un tastierino personalizzato attraverso una SlidingDrawer  (Letto 731 volte)

Offline bisemanu

  • Nuovo arrivato
  • *
  • Post: 43
    • Mostra profilo
  • Dispositivo Android:
    Motorola Defy+ Acer Liquid A1
  • Sistema operativo:
    Mac OS X 10.7 Windows 7
Salve ragazzi,
espongo il mio problema che consiste in questo, nella mia in cui creo dinamicamente una tabella di EditText per eseguire dei calcoli su matrici ho disattivato la tastiera standard di android per attivare un mio tastierino appena creato, il problema che non mi permette di andare avanti con lo sviluppo consiste nell'inserire la tastiera correttamente nel sistema di layout che genero nella mia app ( posto il codice in cui creo i layout per la tabella di edittext):

        FrameLayout frameLayout = new FrameLayout(this);
        frameLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        HorizontalScrollView HSC = new HorizontalScrollView(this);
        HSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));
        frameLayout.setBackgroundResource(R.drawable.lavagna);       
        ScrollView VSC = new ScrollView(this);
        VSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        TableLayout tableLayout = new TableLayout(this);
        tableLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

ciclo for che riceve la dimensione della matrice e genera la tabella di edittext:

for ( int i = 0; i < N; i++) {
          tableRow = new TableRow(this);
          tableRow.setGravity(Gravity.CENTER);
         
             for (int j = 0; j < N; j++) {
                valore[j] = new EditText(this);     
                valore[j].setHint(i1 + "   " + j1);
                valore[j].setPadding(10, 10, 10, 10);     
                tableRow.addView(valore[j]);
   
                tableLayout.addView(tableRow);

        }
       

       VSC.addView(tableLayout);
       
        HSC.addView(VSC);
       
        frameLayout.addView(HSC);
       
        setContentView(frameLayout);

mi trovo quindi con questo sistema di layout che generano la tabella centrandola perfettamente al centro del display. Adesso vorrei aggiungere la mia SlidingDrawer ma con un layout in primo piano rispetto a questi; ho modificato in questo modo l'xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/xK1"
    android:orientation="vertical"
    android:screenOrientation="portrait">   
   <SlidingDrawer
       android:id="@+id/slidingDrawer1"
       android:layout_width="match_parent"
     android:layout_height="fill_parent"
     android:layout_marginTop="270dp"
       android:content="@+id/content"
       android:handle="@+id/handle" >

       <Button
           android:id="@+id/handle"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Handle" />

       <LinearLayout
           android:id="@+id/content"
           android:layout_width="fill_parent"
        android:layout_height="200sp" >
       <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/xK1"
          
        android:orientation="vertical"
        android:visibility="gone"
         android:layout_width="fill_parent"
        android:layout_height="200sp">

           <include android:id="@+id/xKeyBoard" layout="@layout/keyboard" />
       </RelativeLayout></LinearLayout>
   </SlidingDrawer>
</RelativeLayout>

e aggiunto queste righe di codice al file java:

        mLayout = (RelativeLayout) findViewById(R.id.xK1);
        mKLayout = (RelativeLayout) findViewById(R.id.xKeyBoard);
        sd = (SlidingDrawer)findViewById(R.id.slidingDrawer1);
        sd.setOnDrawerOpenListener(this);
        sd.setOnDrawerCloseListener(this);

ma l'app non mi mostra la SlidingDrawer.

Spero in un vostro aiuto