无法将一个ImageView的顶部对齐到TextVIew的顶部
问题描述:
我有一个ImageView
和TextView
内RelativeLayout
嵌套在ScrollView
内。我无法将ImageView
的顶部与TextView
的顶部对齐。它从文本视图顶部边缘向下移动约150dp。无法将一个ImageView的顶部对齐到TextVIew的顶部
这里是我的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/transitionForm"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/backgroundcolor"
android:orientation="horizontal" >
<ScrollView
android:id="@+id/svTutorial"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:splitMotionEvents="true"
android:layout_above="@+id/ImageBottom"
android:layout_below="@+id/ImageTop"
android:scrollbars="vertical"
>
<RelativeLayout
android:id="@+id/layoutTransitionPicWidgets"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/lblQuestionText"
android:layout_width="250dp"
android:layout_height="fill_parent"
android:layout_marginBottom="30px"
android:layout_marginLeft="50px"
android:layout_marginTop="10dp"
android:layout_marginRight="25px"
android:layout_alignParentLeft="true"
android:layout_weight="1"
android:text="get text from db."
android:textColor="#000000"
android:textSize="20sp" />
<ImageView
android:id="@+id/imgPic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/slidetest"
/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
我想以编程方式更改基于其尺寸图像的宽度,所以我编程所有参数的设置。
下面是代码:
imgPic = (ImageView)findViewById(R.id.imgPic);
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
final float density = getResources().getDisplayMetrics().density;
final float dpHeight = outMetrics.heightPixels/density;
final float dpWidth = outMetrics.widthPixels/density;
ViewTreeObserver vto = imgPic.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
imgPic.getViewTreeObserver().removeOnPreDrawListener(this);
final int finalHeight = imgPic.getMeasuredHeight();
final int finalWidth = imgPic.getMeasuredWidth();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.width = Math.round(.4f * dpWidth * density);
params.leftMargin = 50;
params.topMargin = 0;
params.rightMargin = 25;
//params.gravity= Gravity.TOP;
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.RIGHT_OF, R.id.lblQuestionText);
imgPic.setLayoutParams(params);
return true;
}
});
我试着用的LinearLayout这样做的,得到相同的结果。我错过了什么?
答
您可以添加到您的ImageView
android:layout_alignTop="@+id/lblQuestionText"
,但我认为还有更重要的是怎么回事。您没有在ImageView
上指定任何对齐属性,因此它可能无法布局您认为将要布局的位置。
好像也许你想要的ImageView
要到TextView
的权利,在这种情况下,添加该到ImageView
应该有所帮助:
android:layout_toRightOf="@+id/lblQuestionText"
如果使用滚动视图,然后更好的一套高度WRAP_CONTENT代替fill_parent – Apurva 2015-04-03 07:25:12