2015-06-08 15 views
5

Ho cercato di aggiungere scrollview alla mia tastiera personalizzata Android, Ime, ma nulla di ciò che ho provato non funziona fino ad ora.Come aggiungere scrollview a keyboardView in Android

Ecco parte del mio codice

keyboard.xml

<?xml version="1.0" encoding="UTF-8"?> 
<ScrollView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <android.inputmethodservice.KeyboardView 
     android:id="@+id/keyboard" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:isScrollContainer="true" 
     android:scrollbarAlwaysDrawHorizontalTrack="true" 
     android:scrollbarStyle="insideOverlay" 
     android:scrollbars="horizontal" 
     android:focusable="true" 
    /> 
</ScrollView> 

.java

@Override 
    public View onCreateInputView() { 
     context = getApplicationContext(); 
     ScrollView scroll = (ScrollView)getLayoutInflater().inflate(R.layout.keyboard,null); 
     kv = (KeyboardView)scroll.findViewById(R.id.keyboard); 
     keyboard = new Keyboard(this, R.xml.qwerty); 
     kv.setPreviewEnabled(false); 
     kv.setKeyboard(keyboard); 
     kv.setHorizontalScrollBarEnabled(true); 
     kv.canScrollHorizontally(1); 
     kv.setOnKeyboardActionListener(this); 

     return kv; 
    } 

ottengo l'errore sotto

> java.lang.IllegalStateException: The specified child already has a 
> parent. You must call removeView() on the child's parent first. 

atteso: Scorri come immagine in basso (non posso caricare qui, sembra che la mia reputazione non è sufficiente per questo :))

http://www.fandroides.com/wp-content/uploads/2014/04/Google-keyboard-emojis.png

Qualsiasi aiuto sarà apprezzato. Thank You

+0

Che cosa è esattamente il problema? Stai ricevendo errori? Qual è l'uscita prevista rispetto al rendimento effettivo? – JNYRanger

+0

Ho un problema simile. Ma non ho avuto una soluzione. –

risposta

2

provare a fare questo cambiamento:

keyboard.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.inputmethodservice.KeyboardView 
    android:id="@+id/keyboard" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
/> 

my_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/keyboard_layout"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/example_height" 
      android:id="@+id/keyboard_scroll"> 
    </ScrollView> 

</LinearLayout> 

.java

@Override 
public View onCreateInputView() { 

    LinearLayout myView = (LinearLayout) View.inflate(this, R.layout.my_layout, null); 
    ScrollView scrollView = (ScrollView) myView.findViewById(R.id.keyboard_scroll); 

    KeyboardView kv = (KeyboardView) getLayoutInflater().inflate(keyboard.xml, null); 
    keyboard = new Keyboard(this, R.xml.qwerty); 
    kv.setKeyboard(keyboard); 
    kv.setOnKeyboardActionListener(this); 

    scrollView.addView(kv); 
    return myView; 
} 
Problemi correlati