#android #performance #android-layout #android-fragments
#Android #Производительность #android-макет #android-фрагменты
Вопрос:
У меня есть макет с текстом, 2 вращателями, 1 EditText
и 1 кнопкой в конце. Когда я хочу что-то ввести в EditText
эту кнопку, она закрывается клавиатурой.
Это Fragment
не Activity
, если это имеет какое-либо значение.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/transparentlightgrey">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@ id/SectionName"
android:layout_width="fill_parent"
android:layout_height="56dp"
android:background="@color/neonGreen"
android:textColor="#C6D600"
android:textSize="20sp"
android:textStyle="normal|bold">
<TextView
android:id="@ id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="false"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:text="Add Credit"
android:textColor="@color/lightGrey"
android:textSize="20dp"
android:textStyle="bold" />
</RelativeLayout>
<LinearLayout
android:id="@ id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@ id/AddPointsHolder"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="10dp"
android:orientation="vertical">
<Spinner
android:id="@ id/spinneroperater"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="#d8d8d8"
android:spinnerMode="dialog" />
<Spinner
android:id="@ id/spinnerTopUp"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="#d8d8d8"
android:spinnerMode="dialog"
android:touchscreenBlocksFocus="false" />
<EditText
android:id="@ id/phoneNumber"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_below="@ id/linearLayout"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/edit_text_border"
android:ems="10"
android:hint="Enter Phone number"
android:inputType="number"
android:maxLength="12"
android:paddingLeft="5dp"
android:textColor="#ffffff"
android:textColorHint="#ffffff"
android:textSize="18dp" />
</LinearLayout>
<TextView
android:id="@ id/AddPointsHolder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@ id/SectionName"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:text="@string/addPoints"
android:textColor="#ffffff" />
<Button
android:id="@ id/addPoints"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@ id/linearLayout"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/rounded_button_clickable"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="Add Credit" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Ответ №1:
adjustPan
не изменяет размер экрана. Поскольку у вас есть вид прокрутки, вы должны использовать adjustResize
.
Из документов на adjustPan
:
Размер главного окна activity не изменен, чтобы освободить место для программной клавиатуры. Скорее, содержимое окна автоматически перемещается, так что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они печатают. Обычно это менее желательно, чем изменение размера, потому что пользователю может потребоваться закрыть программную клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.
Ответ №2:
Сделайте это.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:background="@color/white"
android:orientation="vertical">
<ScrollView
android:id="@ id/login_form"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<LinearLayout
android:id="@ id/email_login_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add Credit"
android:id="@ id/textView14"
android:textColor="@color/lightGrey"
android:textSize="20dp"
android:textStyle="bold"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_marginLeft="10dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@ id/AddPointsHolder"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@ id/linearLayout"
android:layout_marginTop="10dp">
<Spinner
android:layout_width="fill_parent"
android:layout_height="40dp"
android:id="@ id/spinneroperater"
android:spinnerMode="dialog"
android:layout_weight="1"
android:background="#d8d8d8"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Spinner
android:layout_width="fill_parent"
android:layout_height="40dp"
android:id="@ id/spinnerTopUp"
android:spinnerMode="dialog"
android:layout_weight="1"
android:layout_marginTop="10dp"
android:background="#d8d8d8"
android:touchscreenBlocksFocus="false"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp" />
<EditText
android:layout_width="fill_parent"
android:layout_height="40dp"
android:inputType="number"
android:ems="10"
android:id="@ id/phoneNumber"
android:hint="Enter Phone number"
android:background="@drawable/edit_text_border"
android:textSize="18dp"
android:paddingLeft="5dp"
android:layout_below="@ id/linearLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:maxLength="12"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:textColor="#ffffff"
android:textColorHint="#ffffff" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/addPoints"
android:id="@ id/AddPointsHolder"
android:layout_below="@ id/SectionName"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:textColor="#ffffff" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add Credit"
android:id="@ id/addPoints"
android:layout_below="@ id/linearLayout"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/rounded_button_clickable"
android:paddingRight="10dp"
android:paddingLeft="10dp" />
</LinearLayout>
</ScrollView>
</LinearLayout>