Значение равно 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>
Ответы
Ответ 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>