【问题标题】:Android Layout, view height is equal to screen sizeAndroid Layout,视图高度等于屏幕大小
【发布时间】:2013-11-17 07:55:11
【问题描述】:

在 Android 中如何使视图具有与其屏幕尺寸相同的高度,是否可以仅使用 xml 来实现?或者如果它必须使用脚本,请告诉我如何

谢谢。


抱歉,不清楚,感谢您的回复

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

Here我的完整xml布局。

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

【问题讨论】:

  • 去掉父Layout的padding属性,让你的view的高度和宽度为“MATCH_PARENT”

标签: android android-layout layout scrollview


【解决方案1】:

不,您不能仅在 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));

【讨论】:

  • 感谢您的回复,我会尽快尝试
【解决方案2】:

这可以通过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",否则将不起作用。一位谷歌工程师之前说过。从here查看它

【讨论】:

    【解决方案3】:
    Display screenDisplay = getActivity().getWindowManager().getDefaultDisplay();
    LayoutHeight = screenDisplay.getHeight();
    LinearLayout.LayoutParams listLayoutParams = new LinearLayout.LayoutParams(
                        LayoutHeight, LinearLayout.LayoutParams.WRAP_CONTENT);
    view.setLayoutParams(listLayoutParams);
    

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2015-09-12
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多