Comment ajouter une marge entre EditText et le clavier souple?
je veux ajouter une marge de 10dp entre le texte et le clavier.
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é.
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
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!
Essayez d'ajouter votre RelativeLayout
ScrollView
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);
});
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.