ChatGPT解决这个技术问题 Extra ChatGPT

我有一个 <ScrollView> 布局:

<?xml version="1.0" encoding="utf-8"?>
<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"
    >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/input_one"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

         <EditText
            android:id="@+id/input_two"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

         <EditText
            android:id="@+id/input_three"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

          <Button
            android:id="@+id/ok_btn"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"
            android:text="@string/ok_str" />

      </LinearLayout>
</ScrollView>

正如您在上面看到的,简单的布局由三个输入字段和一个“确定”按钮组成。

我使用上述布局运行我的应用程序,当我点击第一个输入字段 (@+id/input_one) 时,软键盘将从屏幕底部弹出,它隐藏第三个输入字段和“确定”按钮。

由于我使用 <ScrollView> ,我想我可以向上滚动页面以查看软键盘隐藏的第三个输入字段和“确定”按钮,但页面是不可滚动。为什么?如何摆脱它? 基本上,我希望看到每个输入字段和“确定”按钮,即使软键盘弹出。

删除 ,LinearLayout 应该是你的外部布局,它会工作,我希望即使软键盘弹出。
@pakshaheen 当需要滚动视图时,这不会解决问题。

S
Saharsh

我通过在 AndroidManifest.xml<activity> 中定义以下属性解决了这个问题

android:windowSoftInputMode="adjustResize"

你不需要 stateVisible。这将使软键盘在应用程序启动时出现,即使用户没有专注于 EditText
即使没有edittext,它也会自动打开键盘
C
Community

好的,我已经搜索了几个小时才能找到问题,我找到了。

fillViewport="true"android:windowSoftInputMode="adjustResize" 之类的更改都没有帮助我。

我使用的是 Android 4.4,这是一个大错误:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

不知何故,当 SoftKeyboard 可见时,全屏主题会阻止 ScrollViews 滚动。

此刻,我最终改用了这个:

android:theme="@android:style/Theme.Black.NoTitleBar

我不知道如何摆脱带有时间和电池显示的顶部系统栏,但至少我遇到了问题。

希望这可以帮助其他有同样问题的人。

编辑:我有一些解决方法,所以我发布了它here

我不确定这是否对你有用,但它肯定会帮助你理解并澄清一些事情。

EDIT2: Here 是另一个很好的主题,可以帮助您朝着正确的方向前进,甚至可以解决您的问题。


+1 在我的情况下,状态栏被代码中的第 3 方库隐藏:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
@qweret 如果我两个都需要怎么办?全屏和滚动。
@Prabs您找到任何解决方案了吗?我也想要全屏和滚动。
@约翰尼不。现在我对整个应用程序使用全屏,除了带有滚动3的活动。
@Prabs我认为唯一的解决方案是透明状态栏,但在我的情况下仍然是一个问题,因为我想支持 API >= 16 。你有什么主意吗?
J
Jachumbelechao Unto Mantekilla

对我来说,唯一有效的就是将这个属性放在清单中的活动中:

android:windowSoftInputMode="stateHidden|adjustPan"

打开活动时不显示键盘并且不与视图底部重叠。


A
Alex Karshin

像这样在无全屏模式下将其放入您的清单中

android:windowSoftInputMode="stateVisible|adjustPan" 

在你的清单中

<activity
    android:windowSoftInputMode="stateVisible|adjustPan"
    android:name="com.example.patronusgps.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

我已经尝试过了,但不幸的是,一点运气都没有......但是,根视图不是 ScrollView,而是一个包含 LinearLayoutRelativeLayout,然后包含一个 { 1}
V
Vadim Kotov

在您的 Manifest 定义 windowSoftInputMode 属性中:

<activity android:name=".MyActivity"
          android:windowSoftInputMode="adjustNothing">

@JacobRas 请检查此链接:developer.android.com/reference/android/… 它的值为“adjustNothing”:)
我有同样的麻烦,但滚动视图不适用于 adjustNothing :(
A
Alp Altunel

看看这个。

<activity android:name=".Calculator"
    android:windowSoftInputMode="stateHidden|adjustResize" 
    android:theme="@android:style/Theme.Black.NoTitleBar">
</activity>

b
blueware

这只对我有用:

android:windowSoftInputMode="adjustPan"

G
Grant Miller

您可以尝试使用以下代码来解决您的问题:

 <activity
     android:name=".DonateNow"
     android:label="@string/title_activity_donate_now"
     android:screenOrientation="portrait"
     android:theme="@style/AppTheme"
     android:windowSoftInputMode="stateVisible|adjustPan">
 </activity>

你应该费心解释你的代码做了什么,而不是仅仅发布一个干巴巴的代码作为答案。
u
ucMedia

此外,如果您想以编程方式执行此操作,只需将以下行添加到活动的 onCreate 中。

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

S
Saeed Zhiany

好吧,我尝试过的最简单的答案就是删除使活动全屏显示的代码。我有一个这样的代码,它负责让我的活动全屏显示:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

    getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    );
}

我刚刚删除了我的代码,它工作得很好,但如果你想在全屏模式下实现这一点,那么你将不得不尝试其他一些方法


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅