Не удается заставить ScrollView прокручиваться, когда отображается мягкая клавиатура
Я пытаюсь прокрутить эту прокрутку, и вам не повезло.
Я пробовал много типов исправлений, но, похоже, не работал. Я хотел бы иметь возможность прокручивать мою страницу при выборе поля редактирования, а клавиатура занимает половину экрана. Таким образом, я могу перейти к остальным полям редактирования и кнопке accept в нижней части страницы, не имея необходимости вручную скрывать клавиатуру каждый раз.
Вот мой xml-код:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/asuswallpaper4"
android:orientation="vertical"
android:weightSum="1"
>
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#AAA"
android:text="Input Configuration"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#000" >
</TextView>
<ScrollView
android:id="@+id/input_scroll_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enable or Disable"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF" >
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" >
<RadioGroup
android:id="@+id/DisableEnable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:addStatesFromChildren="true"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/disableButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Disable"
android:textColor="#FFF" >
</RadioButton>
<RadioButton
android:id="@+id/enableButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:text="Enable"
android:textColor="#FFF" >
</RadioButton>
</RadioGroup>
</LinearLayout>
<!-- <LinearLayout -->
<!-- android:id="@+id/linearLayout3" -->
<!-- android:layout_width="match_parent" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:layout_marginTop="20dp" -->
<!-- android:orientation="horizontal" > -->
<!-- <TextView -->
<!-- android:id="@+id/textView14" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:text="TextView" -->
<!-- android:textAppearance="?android:attr/textAppearanceMedium" -->
<!-- android:textColor="#000" -->
<!-- android:textStyle="bold" -->
<!-- android:visibility="invisible" > -->
<!-- </TextView> -->
<!-- <TextView -->
<!-- android:id="@+id/textView3" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:text="Positive/Negative Trigger" -->
<!-- android:textAppearance="?android:attr/textAppearanceMedium" -->
<!-- android:textColor="#FFF" -->
<!-- android:visibility="invisible" > -->
<!-- </TextView> -->
<!-- </LinearLayout> -->
<!-- <LinearLayout -->
<!-- android:id="@+id/linearLayout4" -->
<!-- android:layout_width="match_parent" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:orientation="vertical" > -->
<!-- <RadioGroup -->
<!-- android:id="@+id/PosNeg" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:orientation="horizontal" -->
<!-- android:visibility="invisible" android:clickable="false"> -->
<!-- <RadioButton -->
<!-- android:id="@+id/positive_trigger" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:checked="true" -->
<!-- android:text="Positive" -->
<!-- android:textColor="#FFF" android:clickable="false"> -->
<!-- </RadioButton> -->
<!-- <RadioButton -->
<!-- android:id="@+id/negative_trigger" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:layout_marginLeft="100dp" -->
<!-- android:text="Negative" -->
<!-- android:textColor="#FFF" android:clickable="false"> -->
<!-- </RadioButton> -->
<!-- </RadioGroup> -->
<!-- </LinearLayout> -->
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"
android:visibility="invisible" >
</TextView>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Type of Trigger"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioGroup
android:id="@+id/TypeTrigger"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="invisible" >
<RadioButton
android:id="@+id/constant_trigger"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Constant"
android:textColor="#FFF"
android:visibility="visible" >
</RadioButton>
<RadioButton
android:id="@+id/pulse_trigger"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:text="Pulse"
android:textColor="#FFF" >
</RadioButton>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp" >
<TextView
android:id="@+id/textView16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:visibility="invisible" />
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=": Continuous or One Time (One Time Only Available for Pulsed Input(s))"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RadioGroup
android:id="@+id/contOneTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="invisible" >
<RadioButton
android:id="@+id/continuous_trigger"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Continuous" />
<RadioButton
android:id="@+id/oneTime_trigger"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="80dp"
android:text="One Time" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:orientation="vertical"
android:visibility="visible" >
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Timer Configuration For Selected Input"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Number of Pulses"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
<EditText
android:id="@+id/NumberOfPulses"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="0"
android:inputType="number"
android:numeric="integer"
android:visibility="invisible" >
<requestFocus>
</requestFocus>
</EditText>
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.34"
android:text=" within,"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:visibility="visible" >
<EditText
android:id="@+id/Minutes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:hint="0"
android:inputType="number"
android:numeric="integer"
android:visibility="invisible" >
</EditText>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:text="Minutes,"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
<EditText
android:id="@+id/Seconds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:hint="0"
android:inputType="number"
android:numeric="integer"
android:visibility="invisible" >
</EditText>
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Seconds,"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
<EditText
android:id="@+id/Milliseconds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:hint="0"
android:inputType="number"
android:numeric="integer"
android:visibility="invisible" >
</EditText>
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Milliseconds."
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFF"
android:visibility="invisible" >
</TextView>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:weightSum="1" >
<Button
android:id="@+id/inputAccept"
android:layout_width="159dp"
android:layout_height="wrap_content"
android:layout_weight="0.04"
android:text="Accept" >
</Button>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:visibility="invisible" >
</Button>
<Button
android:id="@+id/inputSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.06"
android:text="Save"
android:visibility="invisible" >
</Button>
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:visibility="invisible" >
</Button>
<Button
android:id="@+id/inputLoad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.05"
android:text="Load"
android:visibility="invisible" >
</Button>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
(Пожалуйста, помогите мне понять эту штуку, сводя меня с ума!).
Я также хотел бы упомянуть, что я испробовал большинство исправлений с людьми, у которых были подобные проблемы, такие как заполнение порта представления и включение вертикальной полосы прокрутки, но не из-за этого помогли мне с моими проблемами. Я также попытался добавить их в родительский макет и, похоже, не работал.
Ответы
Ответ 1
Добавьте android:windowSoftInputMode="adjustResize"
в тег <activity>
в вашем AndroidManifest.xml. Это приведет к изменению размера экрана до оставшегося пробела после отображения программной клавиатуры. В результате вы сможете прокручивать, так как экран не будет покрываться клавиатурой каким-либо образом.
EDIT:
Я написал минимальный пример и протестировал его. Если нет большого недоразумения, попробуйте этот код, а затем выясните, почему ваш не работает:
XML-макет:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_height="2000dp"
android:layout_width="wrap_content"
android:gravity="top"
android:text="Scroll Down!"/>
<EditText
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:hint="Enter Text"
/>
</LinearLayout>
</ScrollView>
манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="15"/>
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name="MyActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Ответ 2
Привет, я тоже столкнулся с этой проблемой. Проблема была у меня была добавлена adjustResize, как показано ниже в моем манифесте
и он все равно не будет прокручиваться. Но в моем xml файле в начале моего ScrollView
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/top"
android:scrollbars="none" >
Я удалил android: scrollbars = "none", и это решило мою проблему. Только для тех, чья настройка манифеста не сработала.