在横向模式下禁用全屏软键盘(写入时无法看到应用程序)

时间:2013-12-09 20:17:26

标签: android flex android-softkeyboard landscape flex-mobile

我正在使用FLEX 4.6 SDK开发平板电脑应用程序。应用程序仅在横向模式下运行,而不是在纵向模式下运行。

我的一个视图上有一个TextInput,当它被点击时,IME(输入法编辑器)将用户带到另一个屏幕(全屏模式),该屏幕位于我的视图之上。问题是我不希望用户在输入信件时失去应用程序的视线,因为我需要他看到列表的实时过滤。

我经常阅读并发现我必须在android XML清单中添加android:imeOptions="flagNoExtractUi"句子。我不知道在哪里放。

我使用flagNoExtractUi句子找到了以下示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"         
    >

    <EditText
        android:imeOptions="flagNoExtractUi"
        android:id="@+id/etTextInAct"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >   
        <requestFocus />
    </EditText>

</LinearLayout>

我尝试将其放在我的<activity>内,作为其<intent-filter>的兄弟,但没有任何事情发生。

接下来是我的xml清单:

<android>
        <manifestAdditions><![CDATA[
            <manifest android:installLocation="auto">
                    <!--See the Adobe AIR documentation for more information about setting Google Android permissions-->
                    <!--Removing the permission android.permission.INTERNET will have the side effect of preventing you from debugging your application on your device-->
                <uses-permission android:name="android.permission.INTERNET"/>
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                    <!--<uses-permission android:name="android.permission.READ_PHONE_STATE"/>-->
                    <!--<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>-->
                    <!--The DISABLE_KEYGUARD and WAKE_LOCK permissions should be toggled together in order to access AIR's SystemIdleMode APIs-->
                    <!--<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>-->
                    <!--<uses-permission android:name="android.permission.WAKE_LOCK"/>-->
                    <!--<uses-permission android:name="android.permission.CAMERA"/>-->
                    <!--<uses-permission android:name="android.permission.RECORD_AUDIO"/>-->
                    <!--The ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE permissions should be toggled together in order to use AIR's NetworkInfo APIs-->
                    <!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>-->
                    <!--<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>-->
                <application android:enabled="true">
                    <activity android:excludeFromRecents="false">
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />
                            <category android:name="android.intent.category.DEFAULT" />
                            <category android:name="android.intent.category.LAUNCHER" />
                            <category android:name="android.intent.category.HOME" />
                        </intent-filter>
                        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="vertical"         
                            >

                            <EditText
                                android:imeOptions="flagNoExtractUi"
                                android:id="@+id/etTextInAct"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:ems="10" >   
                                <requestFocus />
                            </EditText>

                        </LinearLayout>
                    </activity>
                </application>  
            </manifest>

        ]]></manifestAdditions>
</android>

当我尝试使用时,Flex 4.6 SDK发送了以下错误:error 402: Current Android sdk version doesn't support LinearLayout as xml tag。我之前使用Flex 4.5.1 SDK尝试过它,但它也没有用。

我也尝试使用之前的<EditText>代码,但它也给了我402错误。

我想补充一点,Flex 4.6 SDK的ADB和AAPT版本为Android Debug Bridge version 1.0.26Android Asset Packaging Tool, v0.2

在以下documentation link中声明自1.5版本以来android:imeOptions="flagNoExtractUi包含在Andoird中,因此Flex 4.6 SDK也应该能够包含该标记。

我没有更多信息要提供,所以唯一剩下的就是寻求你的帮助。有人知道如何使用android:imeOptions="flagNoExtractUi"我应该把它放在哪里?

1 个答案:

答案 0 :(得分:0)

我正在努力解决同样的问题,但似乎根本没有解决方法...... :(

你不能在AIR的xml描述符中包含一个布局文件(也不会被编译器神奇地拾取),并且似乎也没有任何全局NoExtractUI标志,所以,你去..没多少尝试。

然而,您可以做的一件事就是在Adobe的bugbase中实现此功能:https://bugbase.adobe.com/index.cfm?event=bug&id=3789398

@Chris Stratton:OP正在讨论使用Adobe的AIR(mxmlc)编译器的Flex SDK,这是一个支持(其中包括)Android导出目标的跨平台工具。这显然与常规的Android编译器不兼容,当然也不支持Java,XML或任何其他Android特定资源/钩子(保存可能封装在AIR中的app的清单的一部分&# 39;自己的xml描述符文件)