temas teclado tamaño swiftkey samsung personalizar para google gboard fondo como cambiar aumentar agrandar android-layout

android-layout - tamaño - personalizar teclado android



Cómo evitar que el teclado suave cambie el tamaño de la imagen de fondo (10)

Tengo una vista de lista típica con un texto de edittext y un botón en la parte inferior de la actividad.

Cuando hago clic en el texto de edittext , aparece el teclado edittext , puedo desplazar los elementos en la vista de lista pero listview tamaño de mi imagen de fondo.

He intentado android:windowSoftInputMode="adjustResize" pero no hay diferencia.

He intentado android:windowSoftInputMode="adjustPan" . La imagen no se aplasta, todo el diseño se desplaza hacia arriba y pierdo la barra de título. Solo puedo desplazar la lista si los elementos de la lista superan el tamaño del diseño.

Básicamente, quiero mantener la barra de título, conservar la imagen de fondo sin cambiar el tamaño y permitir el desplazamiento de los elementos de la lista. ¿Alguien logró hacer esto? ¡Gracias!


Er, déjame ver ... primero las fotos!

El archivo de diseño act_login.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/login_bkgd" android:orientation="vertical" android:paddingLeft="25dp" android:paddingRight="25dp" > <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:cacheColorHint="#0fff" android:scrollbars="none" android:listSelector="#0fff" android:divider="#0fff" android:dividerHeight="0dp" android:isScrollContainer="true" /> <!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--> <!--android:isScrollContainer="true"--> <!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--> <LinearLayout android:id="@+id/loginItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/loginLogo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="35dp" android:layout_marginTop="35dp" android:scaleType="fitCenter" android:src="@drawable/logo" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingBottom="35dp" > <View android:layout_width="0dp" android:layout_height="1px" android:layout_weight="1" android:background="#Ffff" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:layout_marginRight="6dp" android:text="WELCOME" android:textColor="#Ffff" android:textSize="14sp" /> <View android:layout_width="0dp" android:layout_height="1px" android:layout_weight="1" android:background="#Ffff" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/login_et_long" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" > <TextView android:layout_width="60dp" android:layout_height="wrap_content" android:background="@null" android:text="账号:" android:textColor="#Ffff" android:textSize="16sp" /> <EditText android:id="@+id/loginUsername" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null" android:hint="请输入手机号" android:imeOptions="actionNext" android:inputType="text" android:singleLine="true" android:textColor="#F000" android:textSize="16sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="45dp" android:layout_marginTop="10dp" android:background="@drawable/login_et_long" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" > <TextView android:layout_width="60dp" android:layout_height="wrap_content" android:background="@null" android:text="密码:" android:textColor="#Ffff" android:textSize="16sp" /> <EditText android:id="@+id/loginPassword" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null" android:hint="请输入密码" android:imeOptions="actionGo" android:inputType="textPassword" android:singleLine="true" android:textColor="#F000" android:textSize="16sp" /> </LinearLayout> <TextView android:id="@+id/login" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/login_button" android:gravity="center" android:padding="10dp" android:text="@string/str_login" android:textColor="#Ffff" android:textSize="19sp" /> </LinearLayout> </LinearLayout> </LinearLayout>

Los códigos de Java relacionados.

EditText etUsername, etPassword; EditText etFocus; ViewGroup base; int mSelection; @Override protected void onCreate(Bundle savedInstanceState) { base=(ViewGroup)getLayoutInflater().inflate(R.layout.act_login, null); setContentView(base); getWindow().setBackgroundDrawable(base.getBackground()); base.setBackground(null); super.onCreate(savedInstanceState); } @Override protected void initViews() { etUsername=(EditText)findViewById(R.id.loginUsername); etPassword=(EditText)findViewById(R.id.loginPassword); final ViewGroup item=(ViewGroup)findViewById(R.id.loginItem); base.removeView(item); final View[] items=new View[item.getChildCount()]; for(int i=0; i<item.getChildCount(); i++) items[i]=item.getChildAt(i); item.removeAllViews(); ListView lv=(ListView)base.getChildAt(0); lv.setAdapter(new BaseAdapter() { public View getView(int i, View v, ViewGroup vg) { if(etFocus!=null && getCurrentFocus()!=etFocus){ etFocus.requestFocus(); etFocus.setSelection(mSelection); //etFocus=null; } return items[i]; } public int getCount() {return items.length;} public Object getItem(int position) {return null;} public long getItemId(int position) {return 0;} }); /*View.OnTouchListener listener=new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent e) { if(e.getAction()!=MotionEvent.ACTION_UP) return false; etFocus=(EditText)v; mSelection=etFocus.getSelectionEnd(); ZZ.z("_________________ mSelection="+mSelection); return false; } }; etUsername.setOnTouchListener(listener); etPassword.setOnTouchListener(listener);*/ View.OnFocusChangeListener listener1=new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(!hasFocus){ etFocus=(EditText)v; mSelection=etFocus.getSelectionStart(); ZZ.z("_________________ mSelection="+mSelection); } } }; etUsername.setOnFocusChangeListener(listener1); etPassword.setOnFocusChangeListener(listener1); }

La parte de AndroidManifest.

<activity android:name=".ui.activity.ActLogin" android:label="@string/str_login" android:theme="@style/myTheme" /> <!--android:windowSoftInputMode="adjustResize"-->

La parte de estilo.

<style name="myTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowTranslucentStatus">true</item> </style>


Este código no funciona para mí:

android:windowSoftInputMode="adjustResize"

Pero esto funciona:

android:windowSoftInputMode="adjustPan"


He intentado tantas soluciones para resolver este problema. android: windowSoftInputMode = "adjustPan" hará que todo su pantalla cambie con el teclado. Generalmente tenemos un título de la pantalla en la parte superior. Al usar esta bandera, también saldrá del área visible, lo que hace que la experiencia del usuario sea mala. Utilizo android:windowSoftInputMode="adjustResize" Esto cambiará el tamaño de toda la pantalla, pero causará el mismo problema en el estado de @Maurice en la pregunta.

Así que aquí está mi solución final:

En manifiesto

android:windowSoftInputMode="adjustResize|stateAlwaysHidden"

En xml

No establezca ningún fondo aquí. Y mantenga su vista en ScrollView

En java

Necesitas establecer el fondo a la ventana:

getWindow().setBackgroundDrawableResource(R.drawable.bg_wood) ;


Ir a la Androidmanifest.xml y:

activity name="activityname" android:windowSoftInputMode="stateVisible|adjustPan"


Leí muchas respuestas sobre SO y tomé algunas de muchas para hacer que mi aplicación funcione:

  1. No ScrollView en absoluto en mi activity_main.xml
  2. En AndroidManifest.xml agregó este atributo a la

    <activity android:name=".MainActivity"

etiqueta:

`android:windowSoftInputMode="adjustResize"`

  1. En MainActivity.java dentro de onCreate() agregué getWindow().setBackgroundDrawableResource(R.drawable.app_bg);

Funciona para mí cuando las otras respuestas completas que he intentado no lo hicieron. Si llegaste hasta aquí, espero que también te funcione.


No hay forma de evitar que el teclado virtual cambie el tamaño de una imagen de fondo.

Utilice este tipo de scaleType(matrix) y prepare una imagen adecuada.

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/RelativeLayoutchat" > <LinearLayout android:orientation="horizontal" android:gravity ="clip_horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerInParent="true"> <ImageView android:gravity ="clip_horizontal" android:id="@+id/chat_bak_img" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="matrix"> </ImageView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ListView android:id="@+id/chat" android:layout_width="fill_parent" android:layout_height="fill_parent" android:transcriptMode="alwaysScroll" android:divider="#000000" android:clickable="false" android:layout_weight="9" android:cacheColorHint="#00000000"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="1" style="@android:style/ButtonBar" android:gravity="center" android:paddingLeft="3dip" android:paddingTop="3dip" android:paddingRight="3dip"> <EditText android:id="@+id/chatMsg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:maxLines="5" android:enabled="true" android:textSize="17sp" android:maxLength="150"/> <Button android:id="@+id/sendMsg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/send_withSpace" android:layout_weight="4"/> </LinearLayout> </LinearLayout> </RelativeLayout>


Tengo el mismo problema con el cambio de tamaño de la vista de la imagen mientras el teclado está resuelto con el manifiesto de Android: windowSoftInputMode = "adjustPan" y el siguiente es el ejemplo de diseño en mi caso

es decir, frg_write_social:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/frg_writeyourpost_ll_main" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:fitsSystemWindows="true" android:isScrollContainer="false" android:scrollbars="none" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <RelativeLayout android:id="@+id/frg_writeyourpost_rl_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/frg_writeyourpost_ll_bottum" android:layout_alignParentTop="true" android:minHeight="400dip" > <ImageView android:id="@+id/frg_writyourpost_iv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:adjustViewBounds="true" android:scaleType="fitXY" /> </RelativeLayout> <LinearLayout android:id="@+id/frg_writeyourpost_ll_bottum" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical" android:padding="10dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" android:background="@android:color/white" android:gravity="center" android:orientation="vertical" android:padding="10dp" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:gravity="center" android:text="Write your post" android:textColor="#727F8D" android:textSize="10sp" /> <com.example.views.CustomEditText android:id="@+id/frg_writeyourpost_et_message" android:layout_width="match_parent" android:layout_height="@dimen/slide_image" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@null" android:inputType="textMultiLine" android:maxHeight="@dimen/slide_image" android:maxLines="3" android:textSize="11sp" > </com.example.views.CustomEditText> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:orientation="horizontal" > <TextView android:id="@+id/frg_writeyourpost_tv_totalcharacter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="0" android:textColor="#727F8D" android:textSize="8sp" /> <TextView android:id="@+id/frg_writeyourpost_tv_characterLeft" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:gravity="center" android:text="character" android:textColor="#727F8D" android:textSize="8sp" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > <RadioGroup android:id="@+id/frg_writepost_fbtw_rggroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/frg_writepost_rb_facebook" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/fb_check_selector" android:button="@android:color/transparent" android:gravity="center" android:padding="10dip" android:text="@string/post_for_facebook"/> <View android:layout_width="5dip" android:layout_height="match_parent" android:background="@android:color/transparent"/> <RadioButton android:id="@+id/frg_writepost_rb_twitter" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/tw_check_selector" android:button="@android:color/transparent" android:gravity="center" android:padding="10dip" android:text="@string/post_for_twitter"/> </RadioGroup> </LinearLayout> </LinearLayout> </LinearLayout>

Si es posible cargar la imagen dinámicamente, puede cambiar el tamaño de la imagen con picaaso mientras carga la imagen.


Use android:windowSoftInputMode="adjustResize" y simplemente envuelva su ImageView de fondo en un ScrollView.

<ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scrollbars="none" android:overScrollMode="never"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"/> </ScrollView>


Use ImageView con los atributos fill_parent y centerCrop en RelativeLayout. Me gusta esto;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/yazisma_arka_plan" android:scaleType="centerCrop" /> <ListView android:id="@+id/messages_view" android:layout_width="fill_parent"...


para listview necesitas usar

android:isScrollContainer="false"

y agrega esto a tu actividad en manifest.xml

android:windowSoftInputMode="adjustPan"