我搜索了很多,以了解它将如何工作,我一无所获。 我发现了一些动态的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 ..
答案 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);
所以我得到了一个纯正的广场!好好享受。感谢