无法将一个ImageView的顶部对齐到TextVIew的顶部

无法将一个ImageView的顶部对齐到TextVIew的顶部

问题描述:

我有一个ImageViewTextViewRelativeLayout嵌套在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这样做的,得到相同的结果。我错过了什么?

+0

如果使用滚动视图,然后更好的一套高度WRAP_CONTENT代替fill_parent – Apurva 2015-04-03 07:25:12

您可以添加到您的ImageView

android:layout_alignTop="@+id/lblQuestionText" 

,但我认为还有更重要的是怎么回事。您没有在ImageView上指定任何对齐属性,因此它可能无法布局您认为将要布局的位置。

好像也许你想要的ImageView要到TextView的权利,在这种情况下,添加该到ImageView应该有所帮助:

android:layout_toRightOf="@+id/lblQuestionText"