我想在EditText和Soft Keyboard之间添加10dp的边距。
这是我的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位于我的第3个片段中。
我使用了android:windowSoftInputMode="adjustResize|adjustPan"
和android:windowSoftInputMode="adjustResize"
,但没有发生任何事情。
答案 0 :(得分:11)
我发现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 :(得分:3)
这似乎有效,但对布局有一些不良影响。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
如果有人知道如何使用ADJUST_PAN,那就太棒了!
答案 2 :(得分:0)
我通过添加两行来解决同样的问题
在EditText
-
android:imeOptions="actionSend|flagNoEnterAction"
此行在Activity
标记的Manifeast文件中添加 -
<activity
android:name="----"
android:icon="---"
android:windowSoftInputMode="stateVisible|adjustResize"
android:label="@string/app_name"
android:theme="-----" />
并删除您用来执行此操作的所有代码,例如onTouchListner
,它应该有效。
答案 3 :(得分:0)
在清单中的活动中添加android:windowSoftInputMode="adjustResize"
应该可以解决此问题。
如果您的活动在全屏模式下运行,则此操作将无效。因此,在那种情况下,无需通过代码将其全屏显示,只需将样式<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
添加或更改为style.xml并将其用作您的AppTheme。 AdjustResize或AdjustPan都可以使用。
答案 4 :(得分:0)
Vasily Kabunov答案对我有用,但他的答案需要稍作更改才能起作用。下一个代码是:
editTextField.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus) {
Handler(Looper.getMainLooper()).postDelayed({
//Take care with this line I think that the scroll moves in px and not with dp.
scrollView.scrollBy(0, 80)
}, 100) //You need to play with the time if your activity comes from onCreate and onResume you need to change this value to 1000.
}
});
}
并且您需要在ScrollView或RecyclerView中添加以下几行:
android:paddingBottom="80dp"
android:clipToPadding="false"
重要:如果您已激活全屏显示,则adjustResize和adjustPan标志将失效。
答案 5 :(得分:-1)
尝试在Company xyz = new Company();
xyz.hire(e1);
中添加RelativeLayout
,然后在下面添加代码:
ScrollView