根据现有元素以编程方式设置片段高度

上一篇:

  • 我正在扩展相关布局类并对以下简化的xml示例进行膨胀
  • 我以编程方式在容器布局“fragment_container”中添加片段
  • 我想要实现的是在布局容器(本例中为fragment_container)中添加一个片段,其中高度已由三个文本视图

    <merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    
    <TextView
        android:layout_marginTop="10dp"
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text 1" />
    
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:text="New Text 2" />
    
    <TextView
        android:layout_marginBottom="10dp"
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:text="New Text 3" />
    </RelativeLayout>
    

    以编程方式设置片段的高度,我这样做:

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
    
        if (!hasFocus) return;
    
        ViewGroup.LayoutParams params = fragment.getView().getLayoutParams();
        params.height = getMeasuredHeight();
        params.width = getMeasuredWidth();
        fragment.getView().setLayoutParams(params);
    }
    

    这个解决方案有时候(有时getMeasuredHeight返回0 && getMeasuredWidth返回0),所以它不是正确的解决方案。

    这是一个问题,只能通过使用xml来解决吗?


    正如我看到你垂直堆叠视图,使用LinearLayout垂直方向不是更好,并给每个视图适当的权重(0为高度,适当的重量值)?

    链接地址: http://www.djcxy.com/p/68745.html

    上一篇: Set Fragment height programmatically according to existing elements

    下一篇: How to search a Git repository by commit message?