我有两个布局layout1和layout2采用线性布局,垂直重力 我的标准布局1高度例如是300dp(小型显示器的高度很高)。
在小型显示器中,这几乎占据了所有视图高度。但我想将layout1的最大高度设为视图的50%。
如果我在大显示屏中设置所有高度视图的高度的50%,我会有一些损失空间
如果我在小显示器中设置高度300dp,我只有layout1
所以我必须限制layout1高度,小型显示器的重量为50%,大型显示器的dpi为300dp
如何将此限制设置为layout1。
答案 0 :(得分:2)
在运行时,您可以确定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
}
答案 1 :(得分:1)
如果你想要2个布局(L1 50%)(L2 50%)高度,请使用:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
android:weightSum="1"
>
<LinearLayout
android:orientation="horizontal"
android:layout_height="0dp"
android:layout_weight=".5"
android:layout_width="match_parent"
>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_height="0dp"
android:layout_weight=".5"
android:layout_width="match_parent"
>
</LinearLayout>
</LinearLayout>
如果您想要屏幕尺寸(大,小)的差异百分比,请为每个xml创建另一个名称相同但权重不同的xml。
示例:res/layout-large/activity_main.xml
或res/layout-small/activity_main.xml
仅更改权重。
更多信息:http://developer.android.com/guide/practices/screens_support.html
答案 2 :(得分:0)
我通过将ScrollView的高度与屏幕宽度进行比较(可以根据您的要求与高度进行比较)来解决此问题:
if (myScrollView.getHeight > ((int)(screenWidth * 0.8))) {
myScrollView.getLayoutParams().height = (int)(screenWidth * 0.85);
}
实际上我是动态添加视图的。一旦ScrollView的高度达到一定限度就固定了高度。