android - 如何创建具有最小和最大高度的布局?

标签 android xml android-layout user-interface android-linearlayout

我有两个布局 layout1 和 layout2,采用垂直重力线性布局。
例如,我的标准 layout1 高度是 300dp(小显示器的大高度)。

在小型显示器中,这几乎占据了整个 View 高度。但我想将 layout1 的最大高度设置为 View 的 50%。

如果我在大显示器中将高度设置为所有高度 View 的 50%,我会损失一些空间。
enter image description here
如果我在小型显示器中设置高度 300dp,我只有 layout1。
enter image description here
所以我必须限制 layout1 的高度,小型显示器的重量限制为 50%,大型显示器的 dpi 限制为 300dp。
如何为我的 layout1 设置此限制。

最佳答案

在运行时,您可以确定您的 LinearLayout1 占用了多少空间,并且仅当它占据屏幕的一半以上时才调整其高度。为此,请使用以下代码。

假设你给你的 LinearLayout1 的 id 作为 R.id.LL1,然后使用这段代码,你可以要求 android 将 LL1 的高度调整为 50%

int screenHeight, screenWidth;

//Code to determine screen's height and width.

Display display = getWindowManager.getDefaultDisplay();
if (android.os.Build.Version.SDK_INT>=13) {
    Point size = new Point();
    display.getSize(size);
    screenHeight = size.x;
    screenWidth = size.y;
}
else {
    screenWidth = display.getWidth();
    screenHeight = display.getHeight();
}


LinearLayout ll = (LinearLayout) findViewById(R.id.LL1);

int layoutHeight = ll.getLayoutParams().height; // gets layout's height

if ((layoutHeight * 2) > screenHeight) { 

    // true when LL1 takes more than half of screen, good time to set it back to 50% height

    ll.getLayoutParams().height = screenHeight/2;
    ll.requestLayout(); //Forces layout to be adjusted.
}

else {
//All good, no work required, so skip this else block
}

关于android - 如何创建具有最小和最大高度的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345673/

相关文章:

android - 在不使用 layout_weight 的情况下使两个 LinearLayouts 各占屏幕的 50%

java - 如何使用 java 解析 XML 中任何标记的 CDATA 部分中存在的元素标记

android - 通过 xml 将变量传递给包含的布局

安卓工作室 : Newly Created Directory Not Appearing In Folders View

PHP XML 编辑 CDATA 节点

android - 菜单项文本未显示在 BottomAppBar 中

android - 设置折叠工具栏中 TextView 和 ImageView 的对比度颜色

android - onResume 后应用程序崩溃

android - Realm 定义自定义查询条件

c# - XslTransform 类在 .NET 转换后被弃用