Value equals to match_parent or fill_parent in dimens.xml?

前端 未结 6 656
春和景丽
春和景丽 2020-12-08 00:12

Based on here on XML Attributes section I specify following in my dimens.xml:

-1dp


        
相关标签:
6条回答
  • 2020-12-08 00:38

    I don't think so. @dimen/match_parent is a specific length with unit while match_parent is a special flag.

    0 讨论(0)
  • 2020-12-08 00:40

    First create attribs.xml:

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

    Second use your dimens:

       <dimen name="account_width">@dimen/match_parent</dimen>
       <dimen name="account_height">@dimen/wrap_content</dimen>
    
    0 讨论(0)
  • 2020-12-08 00:40

    Depending on why you want to define match_parent in a @dimen, this use case could help you:

    Instead of defining the width and height in dimen.xml, you can define it as a style in the styles.xml

    I use

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

    and

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

    and use it like

    <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">
    

    which allows me to dynamically set the width and height attributes for different sized devices without having to write any code and you can use match_parent/wrap_content fine. you can use any @dimen that you have defined previously in the style as well if you want.

    I use this because the layout for phone and tablet is the same, except i want to fix the width on tablet but fill the parent on phone, so it saves having to have 2 different layouts with basically the same xml

    0 讨论(0)
  • 2020-12-08 00:44

    For HTC devices use this to achieve match_parent:

    <dimen name="my_match_parent">-1.0px</dimen>
    
    0 讨论(0)
  • 2020-12-08 00:51

    Use this, it works for me

    <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>
    

    And the Reason why match_parent doesn't run. You cannot supply a build in keyword like match_parent

    Edit: Use px instead of dp as suggested by Jarett Millard in the comments.

    0 讨论(0)
  • 2020-12-08 01:03

    You can also achieve this using integers.xml file

    integers.xml file:

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

    Use in dimens.xml:

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

    You might also get lint warning, to suppress it use:

    <dimen name="main_right_menu_width" tools:ignore="ReferenceType">@integer/wrap_content</dimen>
    
    0 讨论(0)
提交回复
热议问题