以维度分配包装内容

时间:2014-06-19 07:34:18

标签: android android-layout dimensions

我想支持小屏幕和大屏幕

我的布局中有一个图像视图 - 在小屏幕中,它需要布局高度为“wrap_content”

并且在大屏幕中它需要400dp(包装内容太小)

而不是创建另一个布局,我想创建一个维度

<dimen name="layout_height">wrap_content</dimen>

<dimen name="layout_height">400dp</dimen>

并将它们分配到正确的文件夹 并在我的imageview写

layout_height=@dimen/layout_height

这是否可行,而不创建另一种布局?

4 个答案:

答案 0 :(得分:12)

要从dimens.xml文件中创建这些项所需的资源中分配wrap_content或match_parent:

JOptionPane optionPane = new JOptionPane("thank you for using java",JOptionPane.WARNING_MESSAGE);
JDialog dialog = optionPane.createDialog("Warning!");
dialog.setAlwaysOnTop(true); // to show top of all other application
dialog.setVisible(true); // to visible the dialog

然后你就可以这样简单地使用它:

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

答案 1 :(得分:8)

对于小屏幕和大屏幕,您可以使用不同的style,覆盖layout_height属性。很遗憾,您无法在wrap_content

中设置dimen

答案 2 :(得分:1)

方法1 - 以编程方式执行:

第1步。将以下内容添加到onCreate()的{​​{1}}中:

Activity

第2步。函数ImageView i = (ImageView)findViewById(R.id.myimageview); int screenSize = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; switch(screenSize) { case Configuration.SCREENLAYOUT_SIZE_LARGE: i.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,dpi(400))); break; case Configuration.SCREENLAYOUT_SIZE_NORMAL: i.setLayoutParams(new ImageView.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT)); break; case Configuration.SCREENLAYOUT_SIZE_SMALL: i.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT)); break; } 的定义如下:

dpi()

注意:请确保您未在​​XML布局中为此private int dpi(int i) { int value = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, i, getResources().getDisplayMetrics()); return value; } 设置android:layout_heightandroid:layout_width

方法2 - 完成XML:

ImageView目录中,制作两个文件夹/reslayout-small。在这两个文件夹中,放置相同的XML布局文件,并在layout-large文件夹中的XML文件和android:layout_width="wrap_content"文件夹中的XML文件中layout-small手动设置android:layout_height="400dp"。现有的layout-large文件夹将包含layout大小屏幕的XML布局。

<强>参考文献:

1。 Supporting Multiple Screens

答案 3 :(得分:0)

您可以同时使用layout_height和minHeight。 对于小屏幕,将minHeight设置为0dp,但是对于大屏幕,将其设置为400dp。 始终将layout_height设置为warp_content。

我认为这将适合您的情况。