gpt4 book ai didi

android - 当键盘在 android 中显示时,ScrollView 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:49 25 4
gpt4 key购买 nike

我的问题是当键盘打开时 ScrollView 不工作。基本上意味着当我有主题时 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" scrollview 不工作当我有主题时 android:theme="@android: style/Theme.Black.NoTitleBar" 并将其从 list android:windowSoftInputMode="adjustResize" 中删除,然后 scrollview 工作正常。但是我的应用主题是 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

这是我的 Activity

package com.example.demo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

}

这是我的xml

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

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

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

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn1" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn2" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn3" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn4" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn5" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn1" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn2" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn3" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn4" />

<Button

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="btn5" />
</LinearLayout>
</ScrollView>

</RelativeLayout>

这是我的 list

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<activity
android:name="com.example.demo.MainActivity"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>

请帮帮我。提前致谢。

最佳答案

我遇到了同样的问题。全屏模式可防止滚动。

具体来说,我测试了几个FLAGS和LAYOUTS。这些正在工作并且不会阻止滚动:

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
View.SYSTEM_UI_FLAG_FULLSCREEN
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
View.SYSTEM_UI_FLAG_LAYOUT_STABLE

这些阻止滚动并且不起作用:

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

所以我终于找到了一个解决方法,花了我几天时间,但它有效!

  1. 在 manifest.xml 中选择一个非全屏的主题,例如:

    android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"
  2. 添加此代码,使您的 Activity 全屏显示

    private static View systemUIView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.rootlayout); //your layout with the scrollview

    // hide the native android navigation and status bar
    systemUIView = getWindow().getDecorView();
    hideSystemUI();

    if (android.os.Build.VERSION.SDK_INT >= 19) {
    getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(
    new OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
    if (visibility == 0) {
    hideSystemUI();
    }
    }
    });
    }

    // ... here comes my whole code...
    }

    @Override
    public void onResume() {
    super.onResume();
    hideSystemUI();
    }

    public void hideSystemUI() {
    systemUIView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_FULLSCREEN
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }

系统栏和导航栏消失。这样做的原因是,因为我设置了 IMMERSIVE_STICKY。全面测试它需要大量工作。我希望这对大家有所帮助,或者至少为您指明了正确的方向。

请记住,全屏主题将始终阻止您在软键盘启动时滚动。我指的是 Android 4.4(KitKat)。

关于android - 当键盘在 android 中显示时,ScrollView 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com