Android Layout,视图高度等于屏幕大小

时间:2013-11-06 07:02:58

标签: android android-layout layout scrollview

Android中的

如何使视图与屏幕大小具有相同的高度,是否可以仅使用xml实现此目的?或者如果必须使用脚本,请告诉我如何

感谢。


很抱歉不清楚,谢谢你的回复

但我认为,match_parent和fill_parent属性不可靠,因为当我将视图放在一个容器中或更改视图容器层次结构时,它将无法工作。

Here我的完整xml布局。

我想用设备屏幕制作高度sam的元素是相对布局中的最后一个列表视图

enter image description here

5 个答案:

答案 0 :(得分:3)

不,您无法仅在XML中实现此目的。

由于Android支持多种屏幕尺寸,因此在运行时您需要检查每种设备的尺寸。每个设备的高度可以这样计算:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;

使用上面的代码,您将获得屏幕的高度,您需要在运行时将 dp 中的高度设置为您的视图。

在您的活动中执行此操作:

// get view you want to resize
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main); 

// get layout parameters for that view
ViewGroup.LayoutParams params = mainLayout.getLayoutParams();

// change height of the params e.g. 480dp
params.height = 480;

// initialize new parameters for my element
mainLayout.setLayoutParams(new LinearLayout.LayoutParams(params));

答案 1 :(得分:0)

我们可以动态获取设备屏幕高度并设置为视图高度

答案 2 :(得分:0)

Display screenDisplay = getActivity().getWindowManager().getDefaultDisplay();
LayoutHeight = screenDisplay.getHeight();
LinearLayout.LayoutParams listLayoutParams = new LinearLayout.LayoutParams(
                    LayoutHeight, LinearLayout.LayoutParams.WRAP_CONTENT);
view.setLayoutParams(listLayoutParams);

答案 3 :(得分:0)

使用

android:layout_height = "match_parent"

而不是

android:layout_height = "wrap_content"

答案 4 :(得分:0)

这可以从xml layout开始。为此,请创建父布局高度和宽度fill_parent or match_parent,然后设置每个子视图宽度fill_parent or match_parent.不要将任何padding or margin设置为父布局。希望它会奏效。我在这里给你一个例子:

<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" >

    <Button
        android:id="@+id/btn_swap"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Left or Right" />

    <SurfaceView
        android:id="@+id/my_surface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

注意:如果您使用ScrollView,则必须设置fillViewport="true",否则无法使用{{1}}。一位谷歌工程师之前曾说过。从here

查看