El teclado virtual de Android bloquea el cuadro de entrada y la configuración de ajustarResize no es efectiva.

* ajustarPan mueve toda la interfaz hacia arriba para exponer el cuadro de entrada sin cambiar el diseño de la interfaz;
* ajustarResize recalcula el tamaño de la interfaz después de abrir el teclado virtual, lo que equivale a usar menos área de interfaz para mostrar el contenido y la entrada La caja generalmente está Por supuesto que está adentro, el teclado está bloqueado.

Requisito: no permita que el diseño coloque el título directamente encima y no permita que el teclado bloquee el cuadro de entrada.

(1)

Después de configurar ajustePan, está bien. La interfaz está hacia arriba en su conjunto. ¿Por qué no es válido configurar ajustarResize?
Resulta que mi Actividad extendida hereda BaseActivty, por lo que cambiarla a Actividad extendida AppCompatActivity está bien.

(2)
 ¿Qué debo hacer si BaseActivty tiene algunos métodos abstractos para Activty o si la capa base ha registrado eventos EventBus?
 

/**
 * Created on 2019/12/16.
 * 如果最外层定义的LinearLayout也可以,extends LinearLayout,
   次布局是RelativeLayout。
 */
public class MyRelativeLayout extends RelativeLayout {

    public MyRelativeLayout(Context context) {
        super(context);
    }

    public MyRelativeLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected boolean fitSystemWindows(Rect insets) {
        insets.top = 0;
        return super.fitSystemWindows(insets);
    }

}

 

Reemplace el ViewGroup raíz del diseño xml original con nuestro ViewGroup personalizado, haga referencia a él y configúrelo en la capa de código.

/**
 * xml层进行调用
 */
<com.test.widget.MyRelativeLayout
    android:layout_width="match_parent"
    android:id="@+id/ly_info"
    android:layout_height="match_parent"/>
/**
 * xml层进行调用
 */
MyRelativeLayout linearLayout = (MyRelativeLayout) findViewById(R.id.ly_info); 
linearLayout.setFitsSystemWindows(true);


 /**
  * 最好在Activity或Fragment销毁时调用linearLayout.setFitsSystemWindows(false);
  * 进行销毁
  */
 @Override
 protected void onDestroy() {
 super.onDestroy();
 ly_info.setFitsSystemWindows(false);
 }
/**
 * 记得在AndroidManifest.xml android:windowSoftInputMode="stateVisible|adjustResize"参数
 */
<activity
     android:name=".test.TestActivity"           
     android:screenOrientation="portrait"
     android:theme="@style/MyAppTheme"
     android:windowSoftInputMode="stateVisible|adjustResize" />
 

 

La prueba personal fue exitosa. Si tienes alguna pregunta, házmelo saber.

Supongo que te gusta

Origin blog.csdn.net/zyy_give/article/details/103563466
Recomendado
Clasificación