Sha*_*kra 27 resources android fill-parent
我希望在手机中填充屏幕并弹出(对话框)平板电脑.
我以为我做了这样的布局文件,
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="@dimen/main_layout_width"
android:layout_height="match_parent">
Run Code Online (Sandbox Code Playgroud)
并将width的值外部化为
在values/dimens.xml中
<dimen name="tutorial_width">match_parent</dimen>
Run Code Online (Sandbox Code Playgroud)
在values-xlarge/dimens.xml中
<dimen name="tutorial_width">320dp</dimen>
Run Code Online (Sandbox Code Playgroud)
但我不能将'match_parent'表示为dimen元素.有帮助吗?谢谢!
pja*_*cze 18
我找到的最好的方法: - 而不是"match_parent"和"fill_parent"写"-1dp" - 而不是"wrap_content"写"-2dp"
Jam*_*ald 16
dp取决于设备显示指标,如果没有一组特定于密度的叠加,则无法在所有设备px上使用,但是,可以使用它.
不幸的是,使用的简单舍入技术TypedValue#complexToDimensionPixelSize()仅考虑非负值:
final int res = (int)(f+0.5f);
if (res != 0) return res;
if (value == 0) return 0;
if (value > 0) return 1;
return -1;
Run Code Online (Sandbox Code Playgroud)
当f(px值)为负数时,结果通常不正确舍入,因为它总是使用加法.对于负尺寸,观察到以下像素大小px:
0px = 0.0
-1px = -1.0
-2px = -1.0
-3px = -2.0
-4px = -3.0
-5px = -4.0
...
Run Code Online (Sandbox Code Playgroud)
我为这个方法打开了一个AOSP问题:
TypedValue#complexToDimensionPixelSize()错误地舍入负维度
考虑到此行为,以下值将适用于所有设备:
<dimen name="match_parent">-2px</dimen>
<dimen name="wrap_content">-3px</dimen>
Run Code Online (Sandbox Code Playgroud)
您可以将-1px或-2px用于match_parent,但wrap_content必须为-3px.这两种组合都适用于设备和仿真器.
在实践中,我发现当-1px用于match_parent时,IntelliJ的预览功能无法呈现布局,并且当被另一个维度引用时,错误地呈现-2px就好像它是"wrap_content"一样<dimen name="my_width">@dimen/match_parent</dimen>.我为IntelliJ IDEA打开了一个问题:
Android预览无法渲染layout_width =" - 1px"
我用一种风格来解决这个问题.对于不同的屏幕尺寸,使用具有android:layout_width项目的单独xml样式元素解决了问题,而没有使用未记录的-1dp
小智 0
您可以创建两个布局 - 默认在“layout”目录中使用 android:layout_height="match_parent",对于平板电脑,在“layout-xlarge”目录中使用 android:layout_height="320dp"
| 归档时间: |
|
| 查看次数: |
9740 次 |
| 最近记录: |