如何将textview对齐到图像的底部中央

时间:2018-08-02 17:37:54

标签: android android-studio

如何将textview对准图像的中心?请查看照片以方便理解:

1

我希望textview“ Blade Runner 2049”与刀片流道图像的中心对齐

我已经尝试过center gravity和padding,但是两者都无法正常工作。任何帮助都将不胜感激。谢谢

编辑::如果Google将任何人带到这里,这是该问题的旧xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorWhite"
        app:itemIconTint="@drawable/selector"
        app:itemTextColor="@drawable/selector"
        app:menu="@menu/bottom_navigation_main" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="380dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="Search"
        android:inputType="text" />

    <ImageButton
        android:id="@+id/imgBtnFrozen"
        android:layout_width="180dp"
        android:layout_height="210dp"
        android:layout_alignEnd="@+id/editText"
        android:layout_alignTop="@+id/imgBtnKin"
        android:background="@drawable/frozen_poster"
        android:scaleType="centerCrop" />

    <ImageButton
        android:id="@+id/imgBtnHotelT"
        android:layout_width="180dp"
        android:layout_height="210dp"
        android:layout_alignEnd="@+id/editText"
        android:layout_alignTop="@+id/imgBtnBladeRunner"
        android:background="@drawable/hotel_transylvania_3_poster"
        android:scaleType="centerCrop" />

    <ImageButton
        android:id="@+id/imgBtnBladeRunner"
        android:layout_width="180dp"
        android:layout_height="210dp"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/editText"
        android:layout_marginTop="70dp"
        android:background="@drawable/blade_runner_poster"
        android:scaleType="centerCrop" />

    <ImageButton
        android:id="@+id/imgBtnKin"
        android:layout_width="180dp"
        android:layout_height="210dp"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/editText"
        android:layout_marginBottom="80dp"
        android:background="@drawable/kin_poster"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/txtBladeRunner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/imgBtnBladeRunner"
        android:text="Blade Runner 2049 "
        android:textColor="@color/colorBlack" />

</RelativeLayout>

6 个答案:

答案 0 :(得分:2)

您应该使用RecyclerView / GridView获得该布局。对于RecyclerView / GridView中的每个项目,请尝试以下XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:src="@drawable/poster" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Dunkirk"
        android:textColor="@android:color/black" />

</LinearLayout>

这将导致这种布局(对于RecyclerView / GridView中的每个项目):

item layout

更多,如果标题很长,您可以使用它:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <!-- find a good ratio for the poster -->
    <ImageView
        android:layout_gravity="center"
        android:layout_width="229dp"
        android:layout_height="340dp"
        android:src="@drawable/poster" />

    <!-- adjust maxWidth according to your poster ratio -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:maxWidth="200dp"
        android:text="Very long title that will need to be split."
        android:textColor="@android:color/black" />

</LinearLayout>

这将导致以下结果:

item layout

其他:完成this GridView教程。或this用于RecyclerView。

答案 1 :(得分:0)

我认为它可以帮助您,但我看不到您的布局XML:

 android:layout_centerHorizontal="true"
 android:layout_centerVertical="true"

答案 2 :(得分:0)

尝试一下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/thumbImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="@drawable/ic_user_icon" /> // your image

    <TextView
        android:id="@+id/movieName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/thumbImage"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:text="Blade Runner 2049" />
</RelativeLayout>

答案 3 :(得分:0)

要获得输出,可以使用 RelativeLayout 。 以下是适用于您的情况的示例代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:id="@+id/image"
    android:layout_margin="8dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/tsp"/>
<TextView
    android:layout_below="@id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_alignEnd="@id/image"
    android:gravity="center_horizontal"
    android:text="Blade Runner 2049" />

</RelativeLayout>

答案 4 :(得分:0)

在gridview内部设置

 <LinearLayout
            android:id="@+id/linearbot1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/imgvw_mon1"
                    android:layout_width="29dp"
                    android:layout_height="26dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_gravity="center"
                    app:srcCompat="@drawable/icon_mon1" />

                <TextView
                    android:id="@+id/tv_mon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/imgvw_mon1"
                    android:layout_centerHorizontal="true"
                    android:text="sample"
                    android:textColor="#e6e5e5"
                    android:textSize="10sp" />
            </RelativeLayout>

  </LinearLayout>

PS:,您也可以使用本教程link

答案 5 :(得分:0)

对于那些想知道如何解决的人,我使用了@Krishna Sharma的答案和@Neeraj vishwakarma的答案,但是通过添加

对其进行了一些修改。
android:layout_alignStart="@id/imgBtnFrozen"

TextView,这是因为如果我不这样做,TextView只会将自身与屏幕的水平中心对齐(尽管它仍位于ImageButton之下)

感谢大家的回答,您的回答也很棒