当软键盘打开时,android制作布局可滚动,但不能向上移动

时间:2015-08-19 12:41:37

标签: android android-layout scrollable android-keypad

这是我的屏幕,键盘后面隐藏着一个按钮。

我想要这样,但可滚动。 -

keyboard open with one button hidden behind

每当键盘打开时,我想让它看起来和图像一样。但是,要使其可滚动,以便用户可以滚动查看屏幕的底部(包括按钮),即使键盘处于打开状态。

我试过了 -

android:windowSoftInputMode="adjustResize"

但是,只要键盘打开,这就会使底部向上移动。

如此图片所示 -

我不想要 - (在打开键盘时向上移动Create Account按钮)

enter image description here

  滚动后,

创建帐户按钮必须可见。

这是布局 -

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:id="@+id/root_layout"
    android:fillViewport="true"

    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"

        android:weightSum="10"

        >
        <LinearLayout  android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="9"
            android:orientation="vertical"
            android:gravity="center_vertical|center_horizontal"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:paddingBottom="@dimen/activity_vertical_margin">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:orientation="vertical">


                <EditText
                    android:id="@+id/et_username_or_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/et_hint_username_or_email"
                    android:inputType="textEmailAddress"
                    android:singleLine="true"
                    />
                <EditText
                    android:id="@+id/et_pswd"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/et_hint_password"
                    android:password="true"
                    android:singleLine="true"
                    />

                <Button
                    android:id="@+id/btn_sign_in"
                    android:layout_marginTop="10dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/btn_sign_in"
                    android:background="@color/lighter_orange"
                    android:textColor="@android:color/white"/>

                <TextView
                    android:layout_marginTop="10dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/or"
                    android:gravity="center_horizontal"
                    android:textColor="@android:color/black"/>


                <Button
                    android:id="@+id/btn_take_a_peek"
                    android:layout_marginTop="10dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/btn_take_a_peek"
                    android:textColor="@android:color/white"
                    android:background="@color/button_gray"/>

                <TextView
                    android:layout_marginTop="15dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/forgot_password"
                    android:gravity="center_horizontal"
                    android:textColor="@color/text_gray"/>
            </LinearLayout>
        </LinearLayout>
        <LinearLayout  android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical">


            <Button
                android:id="@+id/btn_create_account"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/btn_create_account"
                android:background="@color/button_very_light_orange"
                android:textColor="@android:color/white"/>


        </LinearLayout>
    </LinearLayout>
</ScrollView>

请帮我解决这个问题。

9 个答案:

答案 0 :(得分:5)

我有同样的问题并解决了它。

将此内容添加到班级AndroidManifest中<activity>标记内的课程中:

android:windowSoftInputMode="stateHidden|adjustResize">

或:

<activity
        android:name="com.app.app.RegisterScreen"
        android:parentActivityName="com.app.app.LogInScreen"
        android:windowSoftInputMode="stateHidden|adjustPan">

    </activity>

示例:

<activity
        android:name="com.app.yourapp.LogInScreen"
        android:windowSoftInputMode="stateHidden|adjustPan">

</activity>

这适合我。

答案 1 :(得分:5)

在清单文件中添加此输入模式。

<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">
    <title>Sign-Up/Login Form</title>
    <link href='http://fonts.googleapis.com/css?family=Titillium+Web:400,300,600' rel='stylesheet' type='text/css'>

    <link rel="stylesheet" href="css/normalize.css">


        <link rel="stylesheet" href="css/style.css">

  </head>

  <body>
    <div class="form">

      <ul class="tab-group">
    	<li class="tab active"><a href="#leaderboard">RecentWeek</a></li>
    	<li class="tab"><a href="#login">Overall</a></li>
      </ul>

      <div class="tab-content">
    	<div id="signup">

    		<div class="leaderboard" id="leaderboard">

    		  <ol>
    			<li>
    			  <mark>Mustaque Rashid</mark>
    			  <small>315</small>
    			</li>
    			<li>
    			  <mark>Deepa Balasubramaniam</mark>
    			  <small>301</small>
    			</li>
    			<li>
    			  <mark>Raymond Knight</mark>
    			  <small>292</small>
    			</li>
    			<li>
    			  <mark>Trevor McCormick</mark>
    			  <small>245</small>
    			</li>
    			<li>
    			  <mark>Andrew Fox</mark>
    			  <small>203</small>
    			</li>
    			<li>
    			  <mark>Andrew Fox</mark>
    			  <small>203</small>
    			</li>
    			<li>
    			  <mark>Trevor McCormick</mark>
    			  <small>245</small>
    			</li>
    			<li>
    			  <mark>Andrew Fox</mark>
    			  <small>203</small>
    			</li>

    		  </ol>
    		</div>


    	
        </div>

    	<div id="login">

    	</div>

    	</div><!-- tab-content -->

    </div>
     <!-- /form -->




    <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

        <script src="js/index.js"></script>



  </body>
</html>

答案 2 :(得分:0)

制作视图的根

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    ...

</ScrollView>

答案 3 :(得分:0)

请参阅此选项以选择适合您屏幕的模式 https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

答案 4 :(得分:0)

我希望它对你有所帮助我已经设计了这种类型的布局。我没有编辑你的布局。

<?xml version="1.0" encoding="utf-8"?>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res/com.clearfly.groupfone"
 android:id="@+id/registration_view"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@android:color/white"
 android:fillViewport="true"
 android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="@dimen/activity_horizontal_margin"
        android:orientation="vertical"
        android:weightSum="1" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_marginTop="40dp"
            android:layout_weight="0.4"
            android:gravity="center"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/ivProfilePicture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:src="@drawable/ic_launcher" >
            </ImageView>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_marginTop="20dp"
            android:layout_weight="0.6"
            android:orientation="vertical"
            android:weightSum="1" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="0.2"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/firstname_edit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:cursorVisible="true"
                    android:hint="First Name"
                    android:inputType="textCapWords|textPersonName|textNoSuggestions"
                    android:maxLength="50"
                    android:paddingLeft="40dp"
                    android:singleLine="true"
                    android:textColor="@android:color/black"
                     />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="0.2"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/lastname_edit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:cursorVisible="true"
                    android:hint="Last Name"
                    android:inputType="textCapWords|textPersonName|textNoSuggestions"
                    android:maxLength="50"
                    android:paddingLeft="40dp"
                    android:singleLine="true"
                    android:textColor="@android:color/black"
                     />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="0.2"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/email_edit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:cursorVisible="true"
                    android:hint="email"
                    android:inputType="textEmailAddress"
                    android:maxLength="255"
                    android:paddingLeft="40dp"
                    android:singleLine="true"
                    android:textColor="@android:color/black"
                     />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="0.2"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/password_edit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:cursorVisible="true"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:maxLength="20"
                    android:paddingLeft="40dp"
                    android:singleLine="true"
                    android:textColor="@android:color/black"
                    />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="0.2"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/verify_password_edit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:cursorVisible="true"
                    android:hint="Verify pwd"
                    android:inputType="textPassword"
                    android:maxLength="20"
                    android:paddingLeft="40dp"
                    android:singleLine="true"
                    android:textColor="@android:color/black"/>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
  </LinearLayout>
</ScrollView>

答案 5 :(得分:0)

我尝试了您的代码,我也有同样的问题Here

这里我在你的代码中进行了一些修正,值代码为虚拟(字符串,颜色等)...代码片段是:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical"
        android:padding="10dp" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/et_username_or_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="HAI"
                android:inputType="textEmailAddress"
                android:singleLine="true" />

            <EditText
                android:id="@+id/et_pswd"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="HH"
                android:password="true"
                android:singleLine="true" />

            <Button
                android:id="@+id/btn_sign_in"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="#5465"
                android:text="sigin"
                android:textColor="@android:color/white" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:gravity="center_horizontal"
                android:text="ORR"
                android:textColor="@android:color/black" />

            <Button
                android:id="@+id/btn_take_a_peek"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="#ff8f43"
                android:text="sfse"
                android:textColor="@android:color/white" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:gravity="center_horizontal"
                android:text="Forgot"
                android:textColor="#ec0974" />
        </LinearLayout>
    </LinearLayout>

    <Button
        android:id="@+id/btn_create_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#ffd250"
        android:text="Create Accounr"
        android:textColor="@android:color/white" />
</RelativeLayout>
 </ScrollView>

同时将以下参数设置为您Manifest中的活动

  

机器人:windowSoftInputMode = “adjustPan”

**在视图中编辑外层是滚动视图内的相对布局,我将创建帐户按钮作为父底部管理。

请在真实设备中试用。

试试这个并提供反馈! 快乐的编码..

答案 6 :(得分:0)

老者质疑我今天要努力解决的问题,对我有用的是从清单和活动XML中删除“ android:windowSoftInputMode”,而不是使根滚动视图成为根滚动视图的子代,

    <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/FrameLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MyActivity"
        >
        <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/my_scrollview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
  <!-- your xml code here. -->
    </RelativeLayout>
    </ScrollView>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>

答案 7 :(得分:0)

我可能迟到了,但可能会帮助别人。

我也遇到了这个问题,并最终隐藏了我们不想在键盘上看到的按钮。因此,在这种情况下,它是“创建帐户”,将在键盘上方隐藏并在键盘下方显示。

答案 8 :(得分:0)

如果要使其滚动(仅在弹出键盘时),则需要在scrollView中扭曲AdjustResize,但是AdjustResize会自动为您移动页面。

可能是您可以在AdjustResize发生后将页面滚动到所需位置

const sendMessage = (event) => {
        
        event.preventDefault(); // prevent form to refresh the page

        db.collection("messages").add({
            username: username,
            message: input,
            timestamp: firebase.firestore.FieldValue.serverTimestamp(),
        });

        /* setMessages([...messages, { username: username, message: input }]);*/
        setInput("");
    };