16

我想在EditText和軟鍵盤之間添加10dp的餘量。如何在EditText和軟鍵盤之間添加保證金?

enter image description here 這裏是我的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> 

這裏是我的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; 
       }}); 

我使用viewpager和全屏的主題。以下EditText在我的第三個片段中。

我用android:windowSoftInputMode="adjustResize|adjustPan"android:windowSoftInputMode="adjustResize",但什麼也沒有發生。

+0

你有沒有試圖改變EditText上的填充? –

+0

不,我想要它在佈局的中心 – Punit

+0

我是新來的機器人,所以不知道什麼是更好的。 – Punit

回答

2

這似乎工作,雖然有一些不利的影響佈局。

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

如果有人知道如何使用ADJUST_PAN來處理這個問題,那太好了!

+0

這是否適用於全屏模式?因爲我的應用程序全屏。這工作正常,沒有全屏... – Punit

+0

不太確定,可能是別人可能在他們的經驗芯片。 – Veeru

+0

ADJUST_RESIZE不能全屏顯示。不確定PAN,但可能相同。 – mithunc

7

我覺得paddingBottom的屬性會影響editText和鍵盤之間的距離。你可以這樣做:

<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> 

這會讓你的鍵盤保證金您EditText通過10dp

+1

android:paddingBottom =「5dp」,而不是padding_bottom –

+0

將提示和光標移動到edittext中。因此您輸入到edittext中的某些文本可能會變得模糊不清 –

-1

我只需添加兩行

加入這一行EditText解決同樣的問題 -

android:imeOptions="actionSend|flagNoEnterAction" 

和這條線在Manifeast文件中Activity標籤添加 -

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

並刪除所有用於執行此操作的代碼,例如onTouchListner,它應該可以工作。

0

嘗試添加您的RelativeLayoutScrollView,然後添加以下代碼:

editTextField.setOnFocusChangeListener(new OnFocusChangeListener() { 

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

    });