programing

안드로이드:소프트 키보드 위에 버튼을 누르는 방법

javamemo 2023. 10. 7. 09:06
반응형

안드로이드:소프트 키보드 위에 버튼을 누르는 방법

소프트 키보드와 함께 올리고 싶은 "저장" 버튼이 있습니다.따라서 사용자가 내 레이아웃에서 텍스트 편집을 클릭하면 버튼이 키보드 위에 있어야 합니다.이제 버튼은 키보드 아래에 숨겨져 있습니다.이걸 어떻게 하나요?

미리 감사드립니다!

키보드의 입력 모드를 다음과 같이 설정해야 합니다.adjustResize. 매니페스트의 활동 속성에 다음 행을 추가할 수 있습니다.

    android:windowSoftInputMode="adjustResize"

다음은 액티비티에 추가된 속성의 예입니다.

<activity 
     android:name=".activity.MyActivity"
     android:windowSoftInputMode="adjustResize">
</activity>

In hep의 답변과 함께 상위 보기 그룹에 속성을 추가해야 합니다.

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>

이렇게 레이아웃을 정렬하면 키보드 위에 버튼을 놓을 수 있습니다.

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

안드로이드 매니페스트에서

<application
        ...
        >
        <activity android:name=".YourActivity"
            android:windowSoftInputMode="adjustResize"
           >
        </activity>
</application>

enter image description here

참고하세요, 대신에RelativeLayout, 당신은 또한 다른것을 사용할 수 있습니다.ViewGroup맘에 들다LinearLayout무게를 두고CordinatorLayout, ...

그래서 이것은 꽤 오래된 게시물이지만, 저는 제공된 답변에 어려움을 겪었습니다.avi와 inahep 둘 다 맞지만 정확히 어디에 있는지 보여드리겠습니다.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>

가장 좋은 방법은 키 누르기를 숨기고 필요한 경우 키보드 위의 버튼을 누르는 것입니다.

 android:windowSoftInputMode="adjustResize|stateHidden"

가점 상기 사항 중 다음을 포함하는 것"adjustResize"활동이 전체 화면인 경우를 제외하고는 작동합니다.그건 제 경우에요.활동 코드가 전체 화면에 표시되지 않도록 확인합니다.

이 간단한 설정은 키보드로 전체 레이아웃을 스크롤합니다.

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

주요 사항:

  • 매니페스트에 추가된 건 없습니다
  • 안드로이드가 필요에 따라 크기를 조정할 수 있도록 하려면 이미지가 "wrap_content"(고정된 크기가 아님)이어야 합니다.
  • 위와 같이 모든 뷰를 링크해야 합니다.아래쪽 보기 layout_alignParentBottom="true", 위쪽 보기 layout_alignParentTop="true" 및 모든 중간 보기 layout_above="@id/view_below.
  • layout_below="@id/view_위" 특성이 어떤 이유로 작동하지 않습니다.

AndroidX의 경우:

사용하다CoordinatorLayout메인 부모 레이아웃 및 추가의 경우NestedScrollView당신의 컨텐츠를 위해 그리고 당신의 레이아웃 또는 버튼을 자식에 추가합니다.CoordinatorLayout소프트 키보드 위에 버튼을 누르다

<androidx.coordinatorlayout.widget.CoordinatorLayout  
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >
    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         android:isScrollContainer="true"  >
        .......
    </androidx.core.widget.NestedScrollView>
    <com.google.android.material.button.MaterialButton
        android:id="@+id/send_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="@string/login" />

사진:

https://snipboard.io/n45tbx.jpg

언급URL : https://stackoverflow.com/questions/15323758/android-how-to-push-button-above-soft-keyboard

반응형