Basado en aquí en Atributos XML sección I especificar siguiente en mi dimens.xml:

<dimen name="match_parent">-1dp</dimen>
<dimen name="main_left_menu_user_account_width">@dimen/match_parent</dimen>
<dimen name="main_left_menu_user_account_height">@dimen/match_parent</dimen>

Entonces yo uso el de las dos dimensiones en mi diseño:

<ImageView 
    android:id="@+id/userAccountImage"
    android:background="@drawable/user_account"
    android:layout_width="@dimen/main_left_menu_user_account_width"
    android:layout_height="@dimen/main_left_menu_user_account_height" />

Luego, cuando me vista previa para Graphical Layout, se queja:

Debe proporcionar un layout_width atributo.

Debe proporcionar un layout_height atributo.

Realmente puedo definir un valor es igual a match_parent en dimens.xml?

Actualización:

También he probado esto, pero la vista previa todavía se queja:

<dimen name="main_left_menu_user_account_width">-1dp</dimen>
<dimen name="main_left_menu_user_account_height">-1dp</dimen>

Puedo utilizar correctamente wrap_content (el Graphical Layout no se queja en absoluto):

<dimen name="wrap_content">-2dp</dimen>

<dimen name="main_right_menu_width">@dimen/wrap_content</dimen>
<dimen name="main_right_menu_height">@dimen/wrap_content</dimen>
  • Has probado a este? Una opción podría ser el uso de estilos.
  • sí, pero sigue siendo el mismo. Creo que el SDK no como con -1dp valor, por favor ver mi post editado.
  • ¿Cómo se «quejan»? Se está utilizando el último plugin de Eclipse? Me parece que para ser capaz de usar-1dp sin problema en la vista previa del diseño.
  • De verdad? Mi SDK es de 21.1 y platform-tools 16.0.1.. ¿y el tuyo?
  • Estoy usando el enfoque con -1dp y -2dp y funciona en dispositivos reales (Nexus10), gracias.
  • El uso de un estilo en lugar de dimen

InformationsquelleAutor Rendy | 2013-05-10

6 Comentarios

  1. 42

    El uso de este, a mí me funciona

    <dimen name="custom_wrap_content">-2px</dimen>  
    <dimen name="horizontal_border_height">@dimen /custom_wrap_content</dimen>
    
    <dimen name="custom_match_parent">-1px</dimen>  
    <dimen name="vertical_border_height">@dimen /custom_match_parent</dimen>

    Y la Razón por la que match_parent no se ejecuta. Usted no puede suministrar una acumulación de palabras clave como match_parent

    Edición: Uso px en lugar de dp como sugiere Jarett Millard en los comentarios.

    • Gracias, esto funciona para mí. Algo molesto.
    • Android Studio 0.5.3, Herramientas del SDK de 22.6.1 no les gusta el uso de un número entero como una dimen valor 🙁
    • Try-1dp y -2dp. Son TAN amable 🙂
    • -1dp no funciona en dispositivos xxxhdpi
    • Uso -1px y -2px en lugar de dp. El px valores no escala basada en la densidad de pantalla del dispositivo.
    • Lo sentimos, pero no funciona en Android O

  2. 39

    Crear primero attribs.xml:

    <resources>
        <item name="match_parent" type="dimen">-1</item>
        <item name="wrap_content" type="dimen">-2</item>
    </resources>

    Segundo uso de su dimens:

       <dimen name="account_width">@dimen/match_parent</dimen>
       <dimen name="account_height">@dimen/wrap_content</dimen>
    • ESTA es la respuesta correcta y debe ser aceptado.
    • Esto me da un Recursos$NotFoundException.. 🙁
    • Por favor, comparta su código
    • -1px y -2px respectivamente. en primer lugar, no dp pero px porque de escala, en segundo lugar, sin la dimensión de clasificación emulador de la api de 25 fallando en tiempo de ejecución para mí el error layout_width not specified o algo por el estilo
    • Parece funcionar tan lejos 🙂 yo he utilizado custom_match_parent y custom_wrap_content como nombres para no confundir a la gente.
  3. 22

    Dependiendo de por qué desea definir match_parent en un @dimen, este caso de uso le pueden ayudar:

    Que en lugar de definir la anchura y la altura en dimen.xml, se puede definir como un estilo en el styles.xml

    Yo uso

    //res/values/styles.xml
    <style name="IntroLayout">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

    y

    //res/values-sw600dp/styles.xml
    <style name="IntroLayout">
        <item name="android:layout_width">520dp</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

    y utilizarlo como

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:layout_gravity="center"
                    style="@style/IntroLayout">

    que me permite establecer dinámicamente el ancho y la altura de los atributos de los diferentes tamaños de los dispositivos sin tener que escribir ningún código y se puede utilizar match_parent/wrap_content bien. usted puede utilizar cualquier @dimen que ha definido previamente en el estilo si así lo desea.

    Yo uso este porque el diseño para el teléfono y el tablet es el mismo, excepto quiero fijar la anchura en la tablet, pero llenar el padre en el teléfono, por lo que ahorra tener que tener 2 diferentes diseños con básicamente el mismo xml

    • Esto debe ser aceptado contestar porque no usan la magia de los números, tales como -1dp y -2dp y especifica las dimensiones de forma explícita.
  4. 10

    Para los dispositivos de HTC utilizar para lograr match_parent:

    <dimen name="my_match_parent">-1.0px</dimen>
  5. 1

    Usted también puede lograr esto mediante integers.xml archivo

    integers.xml de archivo:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer name="match_parent">-1</integer>
        <integer name="wrap_content">-2</integer>
    </resources>

    Uso en dimens.xml:

    <dimen name="main_right_menu_width">@integer/wrap_content</dimen>

    Usted también puede obtener lint de advertencia, para suprimir el uso de la informática:

    <dimen name="main_right_menu_width" tools:ignore="ReferenceType">@integer/wrap_content</dimen>
  6. 0

    Yo no lo creo. @dimen/match_parent es de una longitud específica con la unidad mientras match_parent es un indicador especial.

    • Pero yo con éxito el uso de esta técnica utilizando wrap_content. Por favor, ver mi post editado.
    • hace @dimen/wrap_content se comportan de la misma como wrap_content
    • sí, por favor consulte la primera frase de mi post.

Dejar respuesta

Please enter your comment!
Please enter your name here