如何设置relativelayout高度等于其宽度?

时间:2014-09-10 16:07:16

标签: java android

我搜索了很多,以了解它将如何工作,我一无所获。 我发现了一些动态的java代码,但是没有使用主题的ant,在打开程序时,显示一个强制关闭。 这是我的代码:

<LinearLayout android:baselineAligned="false"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:id="@+id/rlv1"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_weight="1"
        android:background="@drawable/rectengle2" >
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rlv2"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:background="@drawable/rectengle" >
    </RelativeLayout>   
</LinearLayout>

正如您所看到的,我创建了一个矩形形状并将其用于相对布局中,并将线性布局作为父级,并将线性布局verticali分割为每个相对布局的两个部分。 现在我想将这些相对布局高度设置为等于其宽度,以获得纯方形矩形。 我尝试了很多方法,但是...可以帮助我任何人吗? thnaks ..

2 个答案:

答案 0 :(得分:4)

最简单的解决方案imo是子类RelativeLayout,并覆盖onMeasure,为超级提供相同的宽度和高度。例如

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
<@>正如@ZakTaccardi所指出的,在你的布局中声明它像

<com.example.subclassrelativelayout 
android:layout_width="match_parent"
android:layout_height="wrap_content" />

答案 1 :(得分:1)

最后我自己发现了在这种情况下该怎么做。所以,我将解释如何解决那些已经或将要解决我的问题的人。 在我的xml ui文件中,我为一对相对布局设置layout_weight = 1,这些布局在线性布局中要在屏幕中分割,实际上每个的宽度都是我屏幕宽度的一半。我的问题是关于身高,我尝试了很多java代码来设置相对布局高度等于它的宽度。 最后我在&#34; DP&#34;中计算了屏幕宽度。术语并设置每个相对布局的高度。这是已解决的代码:

    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics ();
    display.getMetrics(outMetrics);

    float density  = getResources().getDisplayMetrics().density;        
    float dpWidth  = outMetrics.widthPixels / density;

    RelativeLayout Rl1 = (RelativeLayout) findViewById(R.id.rlv1);
    Rl1.getLayoutParams().height = (int) (dpWidth);

    RelativeLayout Rl2 = (RelativeLayout) findViewById(R.id.rlv2);
    Rl2.getLayoutParams().height = (int) (dpWidth);

所以我得到了一个纯正的广场!好好享受。感谢