【问题标题】:set remaining height to view at runtime设置剩余高度以在运行时查看
【发布时间】:2015-01-05 17:15:53
【问题描述】:

我正在编写一个需要分配剩余屏幕空间来查看的应用程序。

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txtView_1"
            android:layout_width="match_parent"
            android:layout_height="100dp" />

        <TextView
            android:id="@+id/txtView_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Test Text" />
    </LinearLayout>

并设置运行时我使用以下:

private void process() {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int txtView1Height = txtView_1.getHeight();

        LayoutParams layoutParams = (LayoutParams) txtView_2.getLayoutParams();

        layoutParams = new LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                (metrics.heightPixels - txtView1Height));

        txtView_2.setLayoutParams(layoutParams);
    }

但是这里它的剩余高度并不完全相同..因为 textview 刺痛没有放在中心(这就是我简单检查的方式)......以像素为单位设置高度可能是错误的。

这里有什么建议吗?

【问题讨论】:

  • 无需在代码中这样做。只需将 match_parent 分配给 txtView_2 的高度。它将填满剩余空间

标签: android height layoutparams


【解决方案1】:

可以使用weightxml参数

<TextView
android:id="@+id/txtView_2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:gravity="center"
android:text="Test Text" />

或者在你的情况下简单的设置高度为match_parent

android:layout_height=match_parent

要检查更简单的设置重力为bottom。如果您仍想以编程方式执行此操作,请不要使用DisplayMetrics 来获取高度(操作栏和软件按钮也是显示的一部分)使用您的根LinearLayout 高度。还要检查txtView1Height是否不是0(可能在计算时没有绘制view

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2013-01-23
    • 1970-01-01
    • 2018-10-20
    • 2011-07-27
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多