【问题标题】:How To Know When App Goes To Background如何知道应用程序何时进入后台
【发布时间】:2015-11-28 21:44:29
【问题描述】:

简介

请注意,以下链接中提供的解决方案并没有帮助我解决我的问题:

How to detect when an Android app goes to the background and come back to the foreground

你好堆栈溢出社区

我正在尝试创建一个简单的 Android 应用程序,该应用程序允许用户选择文本和大写或小写字母,以及删除多余空格的功能。我的应用程序只有三个对象,即TButton 中的两个和TMemo 中的一个。我遇到了TMemo 和虚拟键盘的问题。每当虚拟键盘弹出时,它就会显示在TMemo 的底部。通过使用TFormOnVirtualKeyboardHiddenOnVirtualKeybaordShown 事件处理程序,我设法解决了这个问题。我是这样做的:

procedure TfrmEditor.FormVirtualKeyboardHidden(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
  memInput.Align := memInput.Align.alClient;
end;

procedure TfrmEditor.FormVirtualKeyboardShown(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
  if memInput.Align <> memInput.Align.alTop then
  begin
    memInput.Align := memInput.Align.alTop;
    memInput.Height := memInput.Height - Bounds.Height;
  end;
end;

问题

所以这是我的问题:每当显示虚拟键盘并且我切换到另一个应用程序并切换回来时,虚拟键盘被隐藏但 TMemo TAlignLayout ins 没有恢复回 alClient

如果有人能帮助我解决这个TMemo 和虚拟键盘问题,我将不胜感激。

提前谢谢你!

【问题讨论】:

    标签: android firemonkey delphi-xe8 android-virtual-keyboard


    【解决方案1】:

    您可以在活动的布局文件中使用ScrollView。这样,您可以上下滚动查看虚拟键盘隐藏的东西。

    这是一个例子:

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:fillViewport="true">
    
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="1">
    
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="75dp"
                    android:text="Welcome!"
                    android:id="@+id/textView"
                    android:gravity="center"
                    android:textColor="#33b5e5"
                    android:textSize="35sp"/>
    
            </LinearLayout>  
        </LinearLayout>
    </ScrollView>
    

    另外,如果您想“如何知道应用程序何时进入后台?”,您可以尝试添加此功能:

    public void onPause()
    {
        super.oPause();
    }
    

    当应用程序进入后台时调用此函数。 还有更多类似的函数,如 onStart()、onResume、onRestart()、onStop() 和 onDestroy()。 他们的工作正如他们的名字所暗示的那样。

    【讨论】:

    • 我想我应该补充一下,我正在使用 Embarcadero RAD Studio 来开发我的应用程序。
    • 好吧,我对RAD Studio一无所知,我只知道Android Studio和Eclipse。
    • 对不起那个罗汉。我认为添加 FireMoneky 标签可以清楚地表明我正在使用哪个 IDE。无论如何,我正计划尽快开始使用 Android Studio,所以您的解决方案没有白费。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多