【问题标题】:Vertical centering imageview in relativelayout相对布局中的垂直居中图像视图
【发布时间】:2017-01-18 11:26:28
【问题描述】:

我知道这是一个热门问题,但我找到的所有答案要么不起作用,要么破坏了我的布局。我正在为列表视图项目编写布局,它应该只是左侧的文本视图和右侧的图像,这没问题。我尝试使用 android:layout_gravity="center_horizo​​ntal" 但这没有任何改变。我还尝试将我的 LinearLayout 更改为 RelativeLayout 并使用 layout_centerVertical="true",它水平居中,但具有不同高度的行上的图像比其他图像略大。这是我的布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="70dp"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:background="?android:attr/selectableItemBackground">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_weight="2"
            android:paddingTop="8dp"
            android:paddingLeft="8dp"
            android:paddingRight="8dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18dp"
                android:textColor="#000000"
                android:text="Titolo di prova lorem ipsus dolor sit amet..."
                android:id="@+id/article_title"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Autore di prova"
                android:id="@+id/article_info"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:visibility="invisible"
                android:text="non dovresti poter vedere questa scritta..."
                android:id="@+id/article_hiddenid"/>
        </LinearLayout>
<!-- Here's where it should be centered -->
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:padding="2dp"
            android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="70dp"
                    android:src="@drawable/demoimage2"
                    android:layout_gravity="center_horizontal"
                    android:id="@+id/article_image"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

编辑:这是 imgur.com/a/3ZGrl 的外观。如果我使用 RelativeLayout 和 layout_centerVertical,它看起来像这样:imgur.com/a/vWrzH(一些图像比其他图像稍宽)

【问题讨论】:

    标签: android imageview vertical-alignment


    【解决方案1】:

    您无缘无故地嵌套了太多 LinearLayout。

    首先,尝试将父 LinearLayout 的方向设置为水平。并删除第二个嵌套布局。试试这个:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:weightSum="3"
    android:orientation="horizontal"
    android:background="?android:attr/selectableItemBackground">
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="2"
            android:paddingTop="8dp"
            android:paddingLeft="8dp"
            android:paddingRight="8dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18dp"
                android:textColor="#000000"
                android:text="Titolo di prova lorem ipsus dolor sit amet..."
                android:id="@+id/article_title"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Autore di prova"
                android:id="@+id/article_info"/>
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="2dp"
            android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:src="@drawable/demoimage2"
                    android:id="@+id/article_image"/>
         </LinearLayout>
    </LinearLayout>
    

    【讨论】:

    • 感谢您的清理,但没有任何改变,和以前一样
    • 您能否分享一下输出的图像以及您的期望
    • imgur.com/a/3ZGrl 这是我手机上的样子。你可以看到右边的图片不是垂直居中在标题超过 3 行的新闻上。如果我使用 RelativeLayout 和 layout_centerVertical 图像居中,但它们在新闻中略大,标题超过 3 行。不是很多,但很奇怪imgur.com/a/vWrzH
    • 请检查我已经编辑了现在应该可以使用的答案
    • 它现在使图像居中,但它也破坏了整个布局。见:imgur.com/a/VMoXF
    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2012-10-09
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多