Подтвердить что ты не робот

Значение равно match_parent или fill_parent в dimens.xml?

Основываясь на здесь, в разделе XML Attributes, я указываю следующее в своем 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>

Затем я использую оба измерения в своем макете:

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

Затем, когда я просматриваю Graphical Layout, он жалуется:

Вы должны указать атрибут layout_width.

Вы должны указать атрибут layout_height.

На самом деле могу ли я определить значение равным match_parent в dimens.xml?

Update:

Я также пробовал это, но превью все еще жалуется:

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

Я успешно использую wrap_content (Graphical Layout вообще не жалуется):

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

Ответ 1

Используйте это, он работает для меня

<dimen name="custom_wrap_content">-2dp</dimen>  
<dimen name="horizontal_border_height">@dimen /custom_wrap_content</dimen>

<dimen name="custom_match_parent">-1dp</dimen>  
<dimen name="vertical_border_height">@dimen /custom_match_parent</dimen>

И Причина, почему match_parent не запускается. Вы не можете поставить ключевое слово сборки, например match_parent

Ответ 2

Сначала создайте attribs.xml:

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

Вторые используют ваши размеры:

   <dimen name="account_width">@dimen/match_parent</dimen>
   <dimen name="account_height">@dimen/wrap_content</dimen>

Ответ 3

В зависимости от того, почему вы хотите определить match_parent в @dimen, этот пример использования может помочь вам:

Вместо определения ширины и высоты в dimen.xml вы можете определить его как стиль в styles.xml

Я использую

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

и

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

и используйте его как

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

который позволяет мне динамически устанавливать атрибуты ширины и высоты для устройств разного размера без необходимости писать какой-либо код, и вы можете использовать match_parent/wrap_content fine. вы можете использовать любой @dimen, который вы ранее определили в стиле, если хотите.

Я использую это, потому что макет для телефона и планшета тот же, за исключением того, что я хочу исправить ширину на планшете, но заполняю родителя на телефоне, поэтому он сохраняет наличие двух разных макетов с одним и тем же xml

Ответ 4

Для устройств HTC это используется для достижения match_parent:

<dimen name="my_match_parent">-1.0px</dimen>

Ответ 5

Я так не думаю. @dimen/match_parent - это определенная длина с единицей, а match_parent - особый флаг.

Ответ 6

Вы также можете добиться этого, используя integers.xml файл

integers.xml файл:

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

Использовать в dimens.xml:

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

Вы также можете получить предупреждение lint, чтобы подавить его:

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