Android输入法编辑器在横向但不在纵向中工作

时间:2016-02-12 16:48:13

标签: android android-theme android-input-method

屏幕顶部的背景使用以下主题,并且应该是透明的。在纵向模式下,背景变为黑色。有时这甚至不会发生,背景保持透明。为了测试这一点,我使用了TED文本编辑器应用程序。正如我所说,在TED中,背景在纵向模式下变黑。我编写了自己的活动,其中包含多行文本输入字段,在此活动中,背景显示正确。在另一个示例中,当我尝试撰写新电子邮件时,我的Gmail应用中的背景在纵向模式下变为白色。

我也在下面展示了IME的一些布局。

    <resources>
        <!-- some styles here -->

        <style name="AppTheme.Custom"  parent="AppTheme.NoActionBar">
            <item name="android:windowActionBar">false</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsTranslucent" >false</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowCloseOnTouchOutside">true</item>
            <item name="android:colorBackgroundCacheHint">@android:color/transparent</item>
            <item name="android:backgroundDimEnabled">false</item>
            <item name="android:windowContentOverlay">@android:color/transparent</item>
            <item name="android:backgroundDimAmount">0.5</item>
        </style>
    </resources>

这里是IME的一些布局:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        >

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="1"
            android:theme="@style/AppTheme">

            <LinearLayout
                android:background="#00000000"
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:theme="@style/AppTheme.Custom"
                android:layout_gravity="top"
                android:id="@+id/topHalf"></LinearLayout>

            <include layout="@layout/content_main"
                android:layout_weight="0.5"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:theme="@style/AppTheme"
                android:layout_gravity="bottom"
                />

        </LinearLayout>

    </FrameLayout>

1 个答案:

答案 0 :(得分:0)

所以如果我使用布局来填充屏幕,那么使用权重将布局分成两部分,然后使布局的上半部分透明,这不会起作用,因为当你点击透明区域时,它仍然在布局中,并且样式规则按照它所说的“windowCloseOnTouchOutside&#39;”工作。我要做的是设置覆盖整个屏幕的单一布局,然后以编程方式测量整个屏幕,重新将布局大小设置为屏幕大小的一半(再次以编程方式)并设置重力到底部。下面是用于测量屏幕尺寸的代码,下面是用于调整布局大小的代码。

    inputView = (RelativeLayout) getLayoutInflater().inflate(R.layout.content_main, null);
    ...
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, val.mWindowHeight/2);
    lp.gravity = Gravity.BOTTOM ;
    lp.height = val.mWindowHeight/2;
    inputView.setLayoutParams(lp);

调整布局大小。在我的情况下,我需要自己夸大布局。

configuration {
ForEach ($ShareProperties in $MyConfig) {
    # Each resource is named after the Path specified, but with the colon replaced as that's not valid character for the resource name
    if ($ShareProperties.ChangeAccess -eq $null) {
        cLocalFileShare $ShareProperties.Path.Replace(':','__') {
            Path = $ShareProperties.Path
            Name = $ShareProperties.Name
            Ensure = $ShareProperties.Ensure
            ReadAccess = $ShareProperties.ReadAccess
        }
    }
    else
    {
         cLocalFileShare $ShareProperties.Path.Replace(':','__') {
            Path = $ShareProperties.Path
            Name = $ShareProperties.Name
            Ensure = $ShareProperties.Ensure
            ChangeAccess = $ShareProperties.ChangeAccess
            ReadAccess = $ShareProperties.ReadAccess
        }     
    }
}
}

我希望这有助于某人。