我有一个“保存”按钮,我想用软键盘一起推。因此,当用户单击布局中的EditText时,该按钮必须保持在键盘上方。现在按钮隐藏在键盘下方。你是怎么做到的?
提前致谢!
答案 0 :(得分:87)
您需要将键盘的输入模式设置为adjustResize
。您可以这样做,将以下行添加到清单中活动的属性:
android:windowSoftInputMode="adjustResize"
以下是活动中添加的属性示例:
<activity
android:name=".activity.MyActivity"
android:windowSoftInputMode="adjustResize">
</activity>
答案 1 :(得分:24)
除了Inthathep的答案,您还必须在父视图组中添加一个属性
android:fitsSystemWindows="true"
根据需要进行操作。 即,在清单文件中,为活动添加
android:windowSoftInputMode="adjustResize"
和 例如
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:fitsSystemWindows="true" <!-- add this -->
android:orientation="vertical"
>
<EditText
android:id="@+id/et_assetview_comment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="80dp"
android:background="@color/white"
android:hint="Enter comments"
/>
<Button
android:id="@+id/btn_assetview_postcomment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="POST"
/>
</LinearLayout>
答案 2 :(得分:11)
按照这样订购你的布局,你就可以将按钮放在键盘上方
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/button_next"
android:background="#0ff"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="250dp"
android:hint="Hint"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ABC"
android:textSize="50sp"
/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/button_next"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:text="Button Next"
/>
</RelativeLayout>
在android清单
中<application
...
>
<activity android:name=".YourActivity"
android:windowSoftInputMode="adjustResize"
>
</activity>
</application>
请注意,您可以使用另一个RelativeLayout
而不是ViewGroup
来代替LinearLayout
,CordinatorLayout
,... {/ p>
答案 3 :(得分:6)
所以这是一篇相当古老的文章,但我对所提供的答案感到挣扎。 oneavi和Intahep都是正确的,但让我告诉你android:windowSoftInputMode="adjustResize"
的确切位置。
<activity android:name=".DataScreen" />
<activity android:name=".PauseScreen" />
<activity android:name=".RouteInfo"
android:windowSoftInputMode="adjustResize"> <!--This goes in the specific activity with the button -->
</activity>
答案 4 :(得分:1)
附加点
包括"adjustResize"
的上述任何一项都可以使用,除非您的活动是全屏的。那是我的情况。检查您的活动代码以确保其不全屏显示。
答案 5 :(得分:0)
最好的方法是隐藏按键,并在必要时按键盘上方的按钮
android:windowSoftInputMode="adjustResize|stateHidden"
答案 6 :(得分:0)
这个简单的设置通过键盘向上滚动整个布局。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/recycler_view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/image" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/button"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Button" />
</RelativeLayout>
要点: