在线性布局中对齐ImageView和TextView

时间:2016-05-31 08:02:30

标签: android android-layout

我尝试将ImageView和TextView对齐,但imageView高于我的textview。

Xml:

           <RelativeLayout
            android:layout_marginTop="8dp"
            android:id="@+id/secondRelative"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/firstRelative"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/imageNote"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:src="@drawable/rank"
                android:layout_marginEnd="2dp"
                />
            <TextView
                android:id="@+id/note"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:text="Test"
                android:layout_alignBaseline="@id/imageNote"
                />

        </RelativeLayout>

我预览的内容:

Android preview

我在设备上得到了什么:

Not align element

我想对齐ImageView和TextView,但我不知道该怎么做。

修改:

感谢@Bob Malooga和@Rethinavel Pillai。

我使用了TextView的setCompoundDrawables,它完美无缺! (并且它对于perf更好。)

这是我的新代码:

    <RelativeLayout
        android:id="@+id/relativeDetails"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_weight="1"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">
            <TextView
                android:id="@+id/time"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                />
            <TextView
                android:id="@+id/note"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:layout_below="@+id/time"
                />
            <TextView
                android:id="@+id/internetNeeded"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:layout_below="@+id/note"
                />
    </RelativeLayout>

在TextView中设置drawable:

            TextView duree = (TextView) convertView.findViewById(R.id.time);
            int colorG = Color.parseColor("#FFA500");
            Float taille = Utils.convertDpInPx(16, activity);
            /*Convert DP in Pixel
              public static float convertDpInPx(int dp, Activity activity) {
                  Resources r = activity.getResources();
                  float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());
                  return px;
              }*/
            Drawable imgChrono = getContext().getResources().getDrawable( R.drawable.chrono );

            imgChrono.setBounds( 0, 0, Math.round(taille), Math.round(taille)); //To change width and height of drawable
            imgChrono.setColorFilter(colorG, PorterDuff.Mode.SRC_ATOP); //To change color of element
            duree.setCompoundDrawables(imgChrono, null, null, null );
            duree.setText(duration);

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

<LinearLayout
        android:layout_marginTop="8dp"
        android:id="@+id/secondRelative"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imageNote"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:src="@drawable/rank"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"/>
        <TextView
            android:id="@+id/note"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Test"
            android:layout_alignBaseline="@id/imageNote"
        />

    </LinearLayout>