【问题标题】:Softkeyboard not displaying in 2.2 landscape mode软键盘在 2.2 横向模式下不显示
【发布时间】:2010-11-22 06:50:34
【问题描述】:

我遇到了一个奇怪的问题。 我的应用在 2.1(模拟器 + 设备)中运行良好。但是,当我使用 2.2 (模拟器+设备)那么软件有问题 键盘。 应用中有一个横屏模式的Activity(使用 安卓:screenOrientation="风景")。 该活动中有两个 EditText。但是,软键盘不是 为那些显示。事实上,软键盘似乎出现了,但作为一个 底部的酒吧。 请查看屏幕截图。

任何帮助将不胜感激。 问候 萨尔瓦尔凡

为 android:windowSoftInputMode 尝试了不同的方法,但没有成功

<Activity android:name=".PriceCalculator" 
    android:screenOrientation="landscape" 
    android:windowSoftInputMode="stateAlwaysVisible|adjustPan" 
    android:configChanges="orientation" 
    android:label="Pricing Calculator">
    ....
</Activity>


<EditText 
    android:id="@+id/adhesiveUnitPrice" 
    android:inputType="numberDecimal" 
    android:imeOptions="actionDone|flagNoExtractUi" 
    android:layout_column="4" android:gravity="right"/> 

【问题讨论】:

  • 这个选项在做什么? : flagNoExtractUi
  • 该选项没有帮助。我发现,在 2.3 中,如果模拟器或设备有硬件键盘,软键盘将不会以横向模式显示。

标签: android


【解决方案1】:

我发现,在 2.3 中,如果模拟器或设备具有硬件键盘,则软键盘不会以横向模式显示。

【讨论】:

    【解决方案2】:

    我的代码也有类似的问题(参见下面的示例)。仅供参考,将“InputMethodManager.SHOW_IMPLICIT”替换为“InputMethodManager.SHOW_FORCED”解决了这个问题。

    public class Main extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText et = (EditText)findViewById(R.id.et);
    
        et.setFocusableInTouchMode(false);
    
        final Context context = this;
    
        et.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
                v.requestFocusFromTouch();
    
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);
    
            }
        });
    
    }
    

    }

    【讨论】:

    • 您是否在具有 Android 2.2 和物理键盘的真实设备上进行了测试?您在哪个设备上进行了测试?
    • 其实我没有。但我在 HTC WildFire 上测试了上面的代码(它在 Android 2.2 上运行,但没有任何物理键盘)。在横向模式下,如果将 SHOW_FORCED 替换为 SHOW_IMPLICIT,则不会触发 softbeyboard。
    • 仅供参考。使用模拟器(Android 2.2 + 物理键盘),在横屏模式下,上面的代码不会触发软键盘。
    • 那就不解决了。当没有物理键盘(即这种情况或您的 WildFire)时,键盘会在 2.2 上出现,并且在模拟器中,因为它有物理键盘,所以键盘不会出现。情况和我提到的一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2011-06-13
    • 2011-05-06
    • 1970-01-01
    • 2012-10-27
    • 2011-02-14
    相关资源
    最近更新 更多