在dimens.xml中,value等于match_parent或fill_parent?

Ren*_*ndy 47 xml android dimension android-layout android-resources

基于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>
Run Code Online (Sandbox Code Playgroud)

然后我在布局中使用这两个维度:

<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" />
Run Code Online (Sandbox Code Playgroud)

然后,当我预览到时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>
Run Code Online (Sandbox Code Playgroud)

我成功使用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>
Run Code Online (Sandbox Code Playgroud)

小智 47

使用它,它适用于我

<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>
Run Code Online (Sandbox Code Playgroud)

并且之所以match_parent不运行.你不能提供类似关键字的构建match_parent

编辑:使用px而不是dpJarett Millard在评论中的建议.

  • 使用`-1px`和`-2px`代替`dp`.`px`值不会根据设备的屏幕密度进行缩放. (29认同)
  • -1dp在xxxhdpi设备上不起作用 (5认同)
  • Android Studio 0.5.3,SDK工具22.6.1不喜欢使用整数作为维度值:( (2认同)

Ahm*_*deh 40

首先创建attribs.xml:

<resources>
    <item name="match_parent" type="dimen">-1</item>
    <item name="wrap_content" type="dimen">-2</item>
</resources>
Run Code Online (Sandbox Code Playgroud)

第二次使用你的尺寸:

   <dimen name="account_width">@dimen/match_parent</dimen>
   <dimen name="account_height">@dimen/wrap_content</dimen>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案,必须接受. (4认同)
  • 这给了我一个 Resources$NotFoundException .. :( (2认同)

Fon*_*nix 23

根据您希望match_parent在@dimen中定义的原因,此用例可以帮助您:

您可以在styles.xml中将其定义为样式,而不是在dimen.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>
Run Code Online (Sandbox Code Playgroud)

//res/values-sw600dp/styles.xml
<style name="IntroLayout">
    <item name="android:layout_width">520dp</item>
    <item name="android:layout_height">wrap_content</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并使用它

<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">
Run Code Online (Sandbox Code Playgroud)

这允许我动态设置不同大小的设备的宽度和高度属性,而无需编写任何代码,你可以使用match_parent/wrap_content罚款.如果需要,您也可以使用之前在样式中定义的任何@dimen.

我使用这个是因为手机和平板电脑的布局是一样的,除了我想在平板电脑上修复宽度但在手机上填充父母,所以它节省了必须有两个不同的布局与基本相同的xml

  • 这应该是公认的答案,因为它不使用-1dp和-2dp等幻数,并明确指定维度. (2认同)

ram*_*mon 10

对于HTC设备,使用它来实现match_parent:

<dimen name="my_match_parent">-1.0px</dimen>
Run Code Online (Sandbox Code Playgroud)


Bol*_*ton 0

我不这么认为。@dimen/match_parent 是一个带有单位的特定长度,而 match_parent 是一个特殊标志。