1

我的布局有问题。我想在我的活动底部放置一个文本编辑器和一个按钮。然后我想要一个 TextView 组件来填充我活动布局上的所有可用空间。

我在 bigText 组件中有一个大文本,这就是我需要使用 ScrollView 的原因。

我有几个问题:

  1. 我不明白,为什么我在放置 ScrollView 组件时会得到一个软键盘?但是如果没有滚动视图,我就没有这个键盘!如果我关闭软键盘,如下所示:

    getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN );
    

    那么我该如何使用我的 EditText?

  2. 你能帮我布置一下吗?问题是:当我使用 ScrollView - 它填满了所有手机的显示屏时,我什至看到了我的按钮和 EditText,它们应该放在 ScrollView 下方(我看不到布局的完全底部)。我怎样才能解决这个问题?

这就是我的布局尝试失败:

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

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/bigText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </ScrollView>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Search string: " />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:gravity="center_vertical|center_horizontal" >
        </EditText>

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Go >>" />

    </LinearLayout>

</LinearLayout>
4

2 回答 2

1

我不确定为什么添加 ScrollView 会使软键盘弹出,但它很容易解决。像这样以编程方式将其关闭:

  InputMethodManager manager = (InputMethodManager)
  getSystemService(Context.INPUT_METHOD_SERVICE);
  IBinder binder = view.getApplicationWindowToken();
  if (binder != null) {
  manager.hideSoftInputFromWindow(binder, 0);
  } 

view 可以是您的 ScrollView 或 TextView 或其他任何东西

于 2012-08-01T00:36:34.523 回答
0

简单地说:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

于 2012-09-06T01:42:15.273 回答