首先,这是nexus 5上使用默认输入法的问题。
问题是,如果我使用v4片段标签主机和编辑文本(输入类型=数字),当我输入数字时,它将切换到字母键盘,并且编辑文本中没有输入任何内容。
我确定这是v4片段标签主机的问题,因为我尝试了tabhost它可以工作,我只使用活动而不是任何标签主机,它的工作原理。当输入type =“text”,并切换到num pad时,它可以工作。我也可以捕获onKeyDown事件。
唯一的失败案例是输入类型=数字,编辑文本位于v4片段tabhost内
标签片段的布局
<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" >
<EditText
android:id="@+id/edit_ratio"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginBottom="5dp"
android:digits="0123456789."
android:inputType="number"
android:maxLength="4"
android:padding="5dp"
android:textSize="16sp" />
</RelativeLayout>
标签的布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/tabBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:visibility="gone" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</LinearLayout>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
主要活动的java
public class Main extends ActionBarActivity {
public static FragmentTabHost tabHost;
public static LinearLayout tabBar;
private String[] tags = { "home", "form", "calculator", "phone", "partner", "about_us", "settings" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
tabBar = (LinearLayout) findViewById(R.id.tabBar);
tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
tabHost.addTab(
tabHost.newTabSpec(tags[0]).setIndicator(""),
HomeFragment.class, null);
}
}
另外,我发现在使用名为“Simplified cangjie keyboard”的输入法和nexus 5时会发生这种情况。所以我想知道如何解决它。真的非常感谢。