web-dev-qa-db-fra.com

Clavier se chevauchant EditText sur clic

Dans mon fragment, j'ai un editText dans une vue de défilement et quand je clique dessus, je le configure pour qu'il s'ouvre comme ceci:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Cela fonctionne bien dès la première ouverture, mais lorsque je ferme le clavier et l'ouvre à nouveau, il chevauche le editText, comment puis-je définir le editText pour qu'il s'ouvre toujours en mode SOFT_INPUT_ADJUST_PAN?

le XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:custom="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/alabaster">

    <TextView
        Android:id="@+id/semconexao"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Verifique sua conexão com a internet"
        Android:gravity="center"
        Android:layout_marginTop="10dp"
        Android:visibility="gone"/>


    <ScrollView
        Android:id="@+id/scroll"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:layout_above="@+id/footer">

        <LinearLayout
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:orientation="vertical">

            <RelativeLayout
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:visibility="visible">



                <com.Android.volley.toolbox.NetworkImageView
                    Android:id="@+id/imageInst"
                    Android:layout_width="match_parent"
                    Android:layout_height="200dp"
                    Android:scaleType="centerCrop"
                    Android:visibility="visible" />

                <com.retornar.utils.CircledNetworkImageView
                    Android:id="@+id/thumbnail"
                    Android:layout_width="@dimen/logo_maior"
                    Android:layout_height="@dimen/logo_maior"
                    Android:layout_marginLeft="20dp"
                    Android:layout_marginTop="100dp"
                    Android:adjustViewBounds="true"
                    Android:scaleType="centerCrop">

                </com.retornar.utils.CircledNetworkImageView>

                <ImageView
                    Android:id="@+id/more"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:src="@drawable/ic_amp"
                    Android:visibility="gone"
                    Android:layout_alignParentBottom="true"
                    Android:layout_alignParentRight="true"
                    Android:layout_alignParentEnd="true" />

            </RelativeLayout>


            <TextView
                Android:id="@+id/retornarTitulo"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:layout_below="@+id/imageInst"
                Android:layout_marginTop="20dp"
                Android:gravity="center"
                Android:padding="10dp"
                Android:text="@string/retornarTitulo"
                Android:textColor="@color/armadillo"
                Android:textSize="@dimen/text2" />


            <TextView
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:layout_below="@+id/retornarTitulo"
                Android:gravity="center"
                Android:padding="10dp"
                Android:text="@string/retornar"
                Android:textColor="@color/armadillo"
                Android:textSize="@dimen/text1" />

            <include layout="@layout/valores" />


            <EditText
                Android:id="@+id/campovalor"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginBottom="60dp"
                Android:layout_marginLeft="10dp"
                Android:layout_marginRight="10dp"
                Android:layout_marginTop="10dp"
                Android:background="@drawable/shadoweditext"
                Android:gravity="center"
                Android:hint="ou entre com um valor"
                Android:imeOptions="actionDone"
                Android:inputType="numberDecimal"
                Android:padding="10dp"
                Android:singleLine="true" />


            <View
                Android:layout_width="match_parent"
                Android:layout_height="1dp"
                Android:layout_marginLeft="10dp"
                Android:layout_marginRight="10dp"
                Android:layout_marginTop="20dp"
                Android:background="@color/gray" />

            <TextView
                Android:id="@+id/propText"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginBottom="30dp"
                Android:layout_marginTop="20dp"
                Android:gravity="center"
                Android:padding="10dp"
                Android:text="Propósito em destaque"
                Android:textColor="@color/armadillo"
                Android:textSize="@dimen/text2"
                Android:visibility="gone" />

            <include layout="@layout/inst_prop" />

            <ImageView
                Android:id="@+id/maisprop"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center"
                Android:layout_marginTop="20dp"
                Android:src="@drawable/ic_proposito"
                Android:visibility="gone" />

            <TextView
                Android:id="@+id/maisproptext"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginBottom="80dp"
                Android:layout_marginTop="10dp"
                Android:gravity="center"
                Android:text="Mais propósitos"
                Android:textColor="@color/armadillo"
                Android:visibility="gone" />

        </LinearLayout>
    </ScrollView>

    <TextView
        Android:id="@+id/ret"
        fontPath="fonts/Avenir-Bold.ttf"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:alpha="0.9"
        Android:background="@color/blumine"
        Android:gravity="center"
        Android:padding="15dp"
        Android:text="DOAR"
        Android:textColor="@color/white" />

</RelativeLayout>
15
AND4011002849

Qu'en est-il de la configuration de RESIZE au lieu de PAN? Vous pourrez garder votre EditText au-dessus du SoftKeyboard. Essayez comme suit:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Cependant, au lieu de le faire lors de l'exécution, vous pouvez le définir dans le manifest en tant que Activity (parent) attribut. Cela sera également géré dans votre fragment (enfant) :

<activity
    Android:name=".NameActivity"
    Android:label="@string/app_name"
    Android:windowSoftInputMode="stateAlwaysHidden|adjustResize">

Ensuite, comme vous pouvez le voir, le EditText est au-dessus du SoftKeyboard, mais à partir de votre mise en page, vous avez un TextView avec Android:layout_alignParentBottom="true" attribut qui chevauchera le EditText:

1_screenshot_overlap_resize

Pour éviter ce problème, définissez simplement le ScrollView au-dessus du dernier TextView comme suit:

<ScrollView
    Android:id="@+id/scroll"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_above="@+id/ret"> <!-- instead of "footer" -->

Et vous obtiendrez le résultat suivant:

2_screenshot_no_overlap_resize

21
fllo

Essayez ceci, ajoutez ce code dans votre activité AndroidManifest.xml

Android:windowSoftInputMode="adjustPan" 
13
Latief Anwar