android - ScrollViewを含むアクティビティにadjustPanを強制する




android-layout (3)

私のレイアウトはこんな感じです:

<RelativeLayout>
    <RelativeLayout>
    </RelativeLayout>
    <ViewFlipper>
        <ScrollView>
            <LinearLayout>
                <EditText />
            </LinearLayout>
        </ScrollView>
    </ViewFlipper>
    <RelativeLayout>
    </RelativeLayout>
</RelativeLayout>

真ん中のEditTextにフォーカスすると、ソフトキーボードが期待通りにポップアップしますが、マニフェストにandroid:windowSoftInputMode="adjustPan"がある場合でも、ソフトキーボードはレイアウトのサイズを常に変更します。

サイズ変更の問題点は、ScrollViewだけが縮小され、その上下のRelativeLayoutsが変更されずに残り、EditTextがほとんど見えなくなることです。

私はキーボードが表示されているときにRelativeLayoutsを隠してみました(これはまた悲しい話です)が、adjustPanの方が適しているようです。 しかし、それはこの活動に影響を与えません。

ScrollViewがあってもadjustPanを強制的に機能させるにはどうすればよいですか?

更新:

android:isScrollContainer="false"私は私自身の質問に答えることはできませんが、解決策はandroid:isScrollContainer="false"設定することですandroid:isScrollContainer="false"


Answers

マニフェストのactivityタグでこれを試してください。

android:windowSoftInputMode="stateVisible|adjustPan"

いい質問ですが、開発者もほとんど同じことをしますが、これは正しい方法ではありません。 これはあなたを助けるでしょう。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">


<ViewFlipper>
    <ScrollView
      android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
        <LinearLayout
          android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical"
        >
            <EditText />
        </LinearLayout>
    </ScrollView>
</ViewFlipper>
<LinearLayout> 

あなたは問題を作成したことがありません垂直または水平ビューなどの向きでLinearLayoutを取る必要があります。これは非常に簡単です。


私は一般的にはもう使用しません

Bundle savedInstanceState & Co

ライブサイクルは、ほとんどのアクティビティが複雑すぎる必要はありません。 そして、Google自体は、それは信頼性がありません。

私のやり方は、環境設定に変更をすぐに保存することです

 SharedPreferences p;
 p.edit().put(..).commit()

SharedPreferencesは何らかの形でBundlesのように動作します。そして当然のことながら、当初はそのような値は好みから赤色でなければなりません。

複雑なデータの場合は、環境設定を使用する代わりにSqliteを使用することができます。

このコンセプトを適用すると、アクティビティは、間に再起動して最初に開いたか、バックスタックによって再オープンしたかにかかわらず、最後に保存された状態をそのまま使用し続けます。







android android-layout