2

私が持っているのは、写真をメインの背景として、編集テキストと下部のボタンのセットを使用した写真のアップロードアクティビティです。エディットテキストをクリックしたときに、ソフトキーボードでエディットテキストとボタンを押し上げて(引き続き表示できるようにします)、背景画像を同じに保ちます。ただし、現時点では、編集テキストの最初の行が表示されるのに十分なだけ押し上げられ、すべてのボタンが非表示になっています。

基本的には、どういうわけかソフトキーボードにビューを添付して、残りのアクティビティはそのままにしておきたいと思います。マニフェストでwindowSoftInputModeフラグを設定しようとしましたが、どのオプションも希望する効果を生み出しません(レイアウトのサイズを変更したくないので、パンは効果がないように見えます)。どうすればこのようなことを達成できますか?

4

1 に答える 1

1

残念ながら、現在のSDKでは、ソフトキーボードが表示されたり消えたりしたときのビューの動作に関しては、システムに少し依存しています。探している動作を実現する最良の方法は、ウィンドウにデフォルトの入力モードを残し、ビューにスクロール可能な要素が1つあることを確認することです。この要素は、キーボードが非表示(スクロールビューよりも小さいコンテンツ)のときにスクロールする必要はありませんが、キーボードが表示されると、スクロール可能なビューのサイズが折りたたまれ、他のすべてがそのままになります。

これが例です。これがあなたのres/layout /main.xmlだとしましょう:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:id="@+id/control"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical">
    <EditText
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/>
    <Button
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:text="A Button"/>
  </LinearLayout>
  <ScrollView
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_above="@id/control">
  </ScrollView>
</RelativeLayout>

これを基本的なアクティビティのルートレイアウトとして試してみてください。Androidは、フォーカスされた入力要素を表示するのに十分なだけビューを上にスライドするのLinearLayoutではなく、ビューポートのサイズを変更しているため、キーボードで全体が上下にスライドすることがわかります。ScrollView今見ています)。

于 2011-01-27T20:59:50.297 に答える