Значение равно match_parent или fill_parent в измерениях. Xml?
Основываясь здесь на разделе XML-атрибутов, я указываю следующее в моем 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
?
Обновить:
Я также попробовал это, но предварительный просмотр все еще жалуется:
<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>
6 ответов
Используйте это, это работает для меня
<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>
И причина почему match_parent
не работает Вы не можете указать ключевое слово в видеmatch_parent
Редактировать: Использовать px
вместо dp
как предложено Джаретт Миллард в комментариях.
Сначала создайте 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>
В зависимости от того, почему вы хотите определить match_parent
в @dimen этот вариант использования может помочь вам:
Вместо определения ширины и высоты в dimension.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. Вы также можете использовать любой @dimen, который вы определили ранее в стиле, если хотите.
Я использую это, потому что макет для телефона и планшета одинаков, за исключением того, что я хочу зафиксировать ширину на планшете, но заполнить родительский элемент на телефоне, так что избавляет от необходимости иметь 2 разных макета с одинаковым xml
Для устройств HTC используйте это для достижения match_parent:
<dimen name="my_match_parent">-1.0px</dimen>
Вы также можете достичь этого, используя 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>
Я так не думаю. @dimension/match_parent - это конкретная длина с единицей измерения, а match_parent - специальный флаг.