设置剩余高度以在运行时查看

时间:2015-01-05 09:01:38

标签: android height layoutparams

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

<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 sting没有放在中心(这就是我简单检查的方式)......可能会错误地设置像素高度。

这里有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您可以使用weight xml参数

<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