8
votes

Afficher le clavier virtuel dans Android Tablayout

J'utilise Tablayout pour afficher différentes méthodes d'entrée. La première onglegle contient des boutons et la quatrième onglet doit afficher le clavier standard incorporé dans cette nausée. Ici une capture d'écran Comment il faut ressembler à:

 Entrez la description de l'image ici p>

Le tuaquin fonctionne jusqu'à présent. J'ai essayé de créer un fichier XML de mise en page avec un clavierView. Mais l'application ne montre pas de clavier: p> xxx pré>

Si j'utilise un simple TextView, l'application affiche le texte ... de sorte que la nausée elle-même fonctionne:

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="This is a tab layout"
        android:id="@+id/textView"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>


1 commentaires

Je ne suis pas sûr, mais avez-vous essayé de spécifier une certaine hauteur à votre clavierview? Comme environ 250dp ou quelque chose comme ça?


3 Réponses :


1
votes

J'ai écrit un IME il y a environ deux ans. Votre cas est différent de la mienne, mais l'idée devrait être la même.

Le problème est que vous n'avez pas spécifié de la disposition de clavier forte> pour la vue du clavier. P>

Voir le code : P>

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // Round up a little
        if (mKeyboard == null) {
            setMeasuredDimension(mPaddingLeft + mPaddingRight, mPaddingTop + mPaddingBottom);
        } else {
            int width = mKeyboard.getMinWidth() + mPaddingLeft + mPaddingRight;
            if (MeasureSpec.getSize(widthMeasureSpec) < width + 10) {
                width = MeasureSpec.getSize(widthMeasureSpec);
            }
            setMeasuredDimension(width, mKeyboard.getHeight() + mPaddingTop + mPaddingBottom);
        }
    }


0 commentaires

1
votes

Je n'ai pas écrit d'autres informations, je pense donc que je pense que je pense que vous écrivez des étapes complètes pour travailler avec le clavier, basé sur DOC ou, Cet exemple :

1 Modifier le manifeste en ajoutant des propriétés (à l'activité ou au service) p>

public class SimpleIME extends InputMethodService
    implements OnKeyboardActionListener{

    private KeyboardView kv;
    private Keyboard keyboard;

    private boolean caps = false;

    @Override
    public void onKey(int primaryCode, int[] keyCodes) {        

    }

    @Override
    public void onPress(int primaryCode) {
    }

    @Override
    public void onRelease(int primaryCode) {            
    }

    @Override
    public void onText(CharSequence text) {     
    }

    @Override
    public void swipeDown() {   
    }

    @Override
    public void swipeLeft() {
    }

    @Override
    public void swipeRight() {
    }

    @Override
    public void swipeUp() {
    }
}


0 commentaires

1
votes

Dans mon fragment, j'ai besoin de certaines lignes de code, par exemple, je devais ajouter une mise en page XML:

public class SQLConsoleTab2Fragment extends SQLConsoleFragment implements KeyboardView.OnKeyboardActionListener {

    public KeyboardView keyboard123;
    public View Tab2View;

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//execute(v)


        Tab2View = inflater.inflate(R.layout.tab2, container, false);
        keyboard123 = (KeyboardView) Tab2View.findViewById(R.id.keyboard123);

        Keyboard k1 = new Keyboard(Tab2View.getContext(), R.xml.qwerty_keyboard);


Tab2View.findViewById(R.id.keyboard123);
        keyboard123.setKeyboard(k1);
        keyboard123.setEnabled(true);
        keyboard123.setPreviewEnabled(true);

        keyboard123.setOnKeyboardActionListener(this);

        return Tab2View;
    }
}


0 commentaires