Comment ajouter une marge entre EditText et le clavier souple?

je veux ajouter une marge de 10dp entre le texte et le clavier.

enter image description here Voici mon XML:

<RelativeLayout
    android:id="@+id/BottomLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@drawable/bottom_glass" >

    <EditText
        android:id="@+id/message"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/grey"
        android:ems="10"
        android:layout_marginBottom="10dp"
        android:hint="Enter Message"
        android:textColor="#ffffff" >


    </EditText>

    <ImageButton
        android:id="@+id/sendMessageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/message"
        android:background="@android:color/transparent"
        android:src="@drawable/sendselector" />

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginRight="20dp"
        android:layout_toLeftOf="@+id/message"
        android:background="@android:color/transparent"
        android:src="@drawable/sendmediaselector" />

</RelativeLayout>

Voici mon onCreate():

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    messageText.setOnTouchListener(new OnTouchListener(){

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                            ((Swipe)getActivity()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);
                    return false;
                }});

j'utilise viewpager et full screen theme. Le texte D'édition suivant est dans mon 3ème fragment.

j'ai utilisé android:windowSoftInputMode="adjustResize|adjustPan" et android:windowSoftInputMode="adjustResize", mais rien ne s'est passé.

20
demandé sur TheLethalCoder 2014-01-30 00:00:42

4 réponses

je trouve l'attribut de paddingBottom peut affecter la distance entre les editText et le clavier. Vous pouvez le faire comme ceci:

<RelativeLayout   
  android:layout_width="match_parent"   
  android:layout_height="110dp"> 
  <ImageView
     android:layout_width="match_parent"
     android:layout_height="100dp"
     android:background="@drawable/your_edit_text_background"/>   
  <EditText
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="10dp"/> 
</RelativeLayout>

ceci fera de votre marge de clavier votre EditText par 10dp

10
répondu summer1991 2016-11-25 11:35:08

cela semble fonctionner, bien que cela ait un effet indésirable sur la mise en page.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

si quelqu'un sait comment faire fonctionner ceci avec ADJUST_PAN, ce serait génial!

3
répondu Veeru 2014-06-16 04:00:52

Essayez d'ajouter votre RelativeLayoutScrollView et puis ajoutez le code ci-dessous:

editTextField.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        // TODO Auto-generated method stub
        if (hasFocus)
             scrollView.scrollBy(0, 150);

    });
0
répondu Michail Ostryj 2018-03-08 07:43:07

j'ai résolu le même problème en ajoutant seulement deux lignes

Ajouter cette ligne dans EditText -

android:imeOptions="actionSend|flagNoEnterAction"

et cette ligne dans le fichier Manifeast dans Activity tag ajouter -

<activity
            android:name="----"
            android:icon="---"
            android:windowSoftInputMode="stateVisible|adjustResize"
            android:label="@string/app_name"
            android:theme="-----" />

et supprimez tout le code que vous utilisez pour faire ceci comme onTouchListner et ça devrait marcher.

-1
répondu Sushant Gosavi 2015-06-30 11:16:48