Acerca del uso de android: layout_centerHorizontal, android: layout_centerVertical en el diseño de Android



Hoy, cuando estaba mirando el código de página del cliente de Sina Weibo escrito por un gran dios en Internet, vi


 android: layout_centerVertical = "true" en un diseño relativo,


por lo que la función de este código me interesó y me hizo el foco de atención Eso es: el resultado de este código.
Cuando estaba mirando la página de vista xml de la máquina de desarrollo de eclipse, encontré que después de esta oración, apareció una línea verde en el RelativeLayout correspondiente. Mi sensación intuitiva es que esta oración debería aplicarse a este RelativeLayout. Del control.
Pero con una actitud científica, volví a comprobar y encontré que había muy poca información en Internet. Al final, recurrí a un truco asesino: ¡practicarlo yo mismo!
El resultado superó mis expectativas:
De hecho, la función de esta oración es: Deje que este diseño relativo esté en el centro de la dirección vertical de su control padre . No es que especifiques que tus controles internos están en el centro de la dirección vertical.
Leí un
artículo más brillante antes: http://blog.csdn.net/softkexin/article/details/5933589  Este artículo trata sobre el papel de algunos atributos en RelativeLayout Las
últimas tres oraciones: "
android: layout_centerInParent =" true "--Coloca el control en el centro del control padre
android: layout_centerHorizontal =" true "--Coloca el control en el centro de la dirección horizontal
android: layout_centerVertical = "true" - el control se coloca en la posición central en la dirección vertical
. "
Esto muestra que los dos tres se leerán más tarde:
Android: layout_centerHorizontal =" to true "- el control actual se coloca en la posición del centro de control principal en la dirección horizontal
android: layout_centerVertical = "true" --Coloca este control en el centro del control principal en la dirección vertical.
Aquí hay una captura de pantalla del efecto android: layout_centerVertical = "true": el


código correspondiente:
<?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="match_parent"
    android:orientation="vertical" >


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true" >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="helloworld" />
    </RelativeLayout>


</RelativeLayout>


A continuación se muestra una captura de pantalla del efecto de Android: layout_centerHorizontal = "true": el


código correspondiente:
<?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="match_parent"
    android:orientation="vertical" >


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="helloworld" />
    </RelativeLayout>


</RelativeLayout>


En cuanto a android: layout_centerInParent = "true", este atributo es en realidad equivalente a combinar los dos atributos anteriores, lo que tiene el mismo efecto que especificar los dos primeros como verdaderos al mismo tiempo.
Es necesario agregar una cosa más: estas propiedades solo aparecerán cuando el control padre sea RelativeLayout , es decir, el control hijo tendrá estas tres propiedades cuando el control padre sea un diseño relativo,
independientemente del diseño del control hijo Cualquier TextView o Button tendrá estas propiedades.
En este momento, el RelativeLayout en sí, que es el control principal, no tiene estas propiedades. En otras palabras, una vez que un control puede especificar estas tres propiedades, debería ser un control secundario de RelativeLayout. Por supuesto, esta es solo la conclusión que he sacado hasta ahora. No está muy claro si es correcta o no, pero estas son las conclusiones que he sacado en base a la práctica, al menos por el momento, y pueden usarse como una referencia.


    Finalmente, hable de mis pensamientos:
            Para aprender esto, realmente necesito pensar más, para poder entender por analogía, y necesito tener el espíritu de profundizar en ello y la actitud de buscar la verdad a partir de los hechos. La razón por la que tengo curiosidad por los resultados de este atributo también se debe en gran parte a mi investigación reciente. La diferencia entre android: gravity y android: layout_gravity, la gravedad se aplica al control secundario de este control; mientras que layout_gravity se aplica al control mismo que usa este atributo. Especifica dónde para colocarse en el control principal (por Izquierda, derecha, centro); cuando vi que el atributo android: layout_centerVertical = true apareció en un control RelativeLayout, mi primera reacción fue que este atributo se aplicó al control secundario, y luego Fui a ver edición Mirando dentro del dispositivo, encontré que con este atributo, hay una línea horizontal verde adicional en el medio del diseño. Especulando subjetivamente, al menos creo que esta línea horizontal indica que la disposición de los controles en este diseño sigue esta línea horizontal. Esto lleva a la conclusión de que con este atributo, los controles internos del diseño deberían estar centrados en la dirección vertical, pero pensé: layout_gravity no actúa sobre los controles secundarios, sino sobre sí mismo, especificando su posición relativa al control padre. En este caso, lo que me recuerda directamente es: con el atributo "layout_", todo debe actuar sobre uno mismo, algunos amigos pueden preguntar: ¿Por qué quieres actuar sobre uno mismo?
De hecho, la razón por la que lo pienso es muy simple. A los diseñadores de Google, como a nosotros, también les gusta el principio de simplicidad y facilidad de uso, por lo que si el atributo con el nombre "layout_" actúa tanto en el control secundario como en sí mismo Sí, en ese caso, se siente muy confuso de usar y no es conveniente para los programadores recordarlo. Desde esta perspectiva, la facilidad de uso del diseño de Android también se verá comprometida. Como el mejor diseñador de software del mundo, es Es imposible cometer tal error. Está mal ~
      Así que probé estos dos atributos con la actitud de intentarlo, y el resultado fue realmente diferente a mi primera impresión. También verificó mi otra especulación: los atributos con la palabra "layout_" generalmente actúan sobre sí mismos.
    Para resumir lo que dije al principio, realmente necesito pensar más en aprender esto (por ejemplo, después de conocer la diferencia entre el alcance de android: gravity y android: layout_gravity, debes prestar atención cuando veas el atributo con la palabra "layout_". ¿Es la diferencia entre los atributos del mismo nombre con "layout_" similar al caso de la gravedad) y el espíritu de investigación (por ejemplo, he encontrado mucha información en Internet, pero si ninguno de ellos es particularmente claro, debes ser tú mismo La preparación mental de la investigación, porque realmente se puede dominar), la actitud de buscar la verdad a partir de los hechos (como mi actuación en este ejemplo, el sentimiento preconcebido al principio es lo que Es el ámbito de acción. Tal forma de especulación no puede decirse que sea mala, porque en muchos casos las especulaciones también se basan en, y muchas veces harán especulaciones acertadas, pero luego, deben tener una actitud pragmática para mirar No puede hacer suposiciones subjetivas después de hacer sus propias especulaciones. No puede tener miedo a los problemas o perder el tiempo. De hecho, hágalo usted mismo. Es probable que el resultado de la búsqueda de la verdad sea que su enfoque no solo no perder tiempo, pero también ahorrar mucho tiempo en el futuro).
   De acuerdo, muchas tonterías, espero que este artículo pueda ayudar a algunos amigos que tienen el mismo problema ~ Gracias ~~ ^ o ^



Supongo que te gusta

Origin blog.csdn.net/awy1988/article/details/40342837
Recomendado
Clasificación