以编程方式将match_parent指定为维度

时间:2016-06-05 12:28:56

标签: android xml android-layout android-resources

我正在使用dimens.xml文件为不同的版面尺寸分配值(即 dimens.xml@values dimens.xml@values-sw600dp

尝试将维度设置为wrap_Contentmatch_parent时,我使用以下方式:

<resources>
    <item name="match_parent" format="integer" type="dimen">-1</item>
    <dimen name="popup_width">@dimen/match_parent</dimen>
</resources>

并且在布局xml文件中使用此维度时它可以正常工作,但是当尝试以编程方式使用它时,就像声明弹出窗口一样:

PopupWindow pw = new PopupWindow(layout, mContext.getResources().getDimension(R.dimen.popup_width),
                ViewGroup.LayoutParams.MATCH_PARENT, true);
pw.showAtLocation(layout, Gravity.CENTER, 40, 0);

它根本不起作用,它认为我向它传递-1dp值(它执行直接引用),因此布局完全毁了。

那么如何在dimens.xml文件中声明match_parent dimen以便在我的代码中有效地使用它?或者我怎么能在我的代码中有效地使用当前的维度形式?

1 个答案:

答案 0 :(得分:0)

我使用-1.0px代表match_parent解决了我的问题,而-2.0px代表wrap_content解决了我的问题,dp正在使用不同的屏幕密度进行缩放{{1这不是对不同屏幕密度的反应(以及我在解决方案中需要的东西):

px

然后我以编程方式使用它:

<dimen name="popup_width">-1.0px</dimen>  <!-- for match_parent -->

<dimen name="popup_height">-2.0px</dimen>  <!-- for wrap_content -->