【问题标题】:Android layout inconsistencyAndroid布局不一致
【发布时间】:2014-05-28 14:07:56
【问题描述】:

我的布局以两种不同的布局显示。第一个显示在 LinearLayout 中,它的行为符合预期:

但是,当此布局是列表视图的一部分时,文本视图不会居中:

这是布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="130dp"
    android:orientation="vertical">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="horizontal"
            android:padding="5dp">
            <com.parse.ParseImageView
                android:id="@+id/iv"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:scaleType="fitCenter"/>
            <TextView
                android:id="@+id/tv_title"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2.5"
                android:layout_marginLeft="10dp"
                android:textAppearance="@android:style/TextAppearance.Holo.Medium"
                android:ellipsize="end"
                android:maxLines="3"
                android:textStyle="bold"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="25dp"
            android:orientation="horizontal"
            android:paddingLeft="10dp">
            <View
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@color/blue"
                android:layout_gravity="center"
                />
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/gray"
                android:layout_margin="7dp"
                />
            <TextView
                android:id="@+id/tv_source"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textAppearance="@android:style/TextAppearance.Holo.Small"
                android:gravity="center"/>
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/gray"
                android:layout_margin="7dp"
                />
            <TextView
                android:id="@+id/tv_date"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:fontFamily="sans-serif-light"
                android:textAppearance="@android:style/TextAppearance.Small"
                android:gravity="center"/>
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/gray"
                android:layout_margin="7dp"
                />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_fire"
                android:layout_gravity="center"/>
            <TextView
                android:id="@+id/tv_viewCount"
                android:layout_marginLeft="5dp"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:fontFamily="sans-serif-light"
                android:textAppearance="@android:style/TextAppearance.Small"
                android:gravity="center"/>
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"/>
    </LinearLayout>
    <ImageView
        android:id="@+id/pin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_pin"/>
    <TextView
        android:id="@+id/comment_tv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:textColor="@color/white"
        android:layout_alignTop="@+id/pin"
        android:layout_alignBottom="@+id/pin"
        android:layout_alignLeft="@id/pin"
        android:layout_alignRight="@+id/pin"
        android:gravity="center"
        android:layout_marginBottom="10dp"/>

</RelativeLayout>

我所指的 textView 在底部,id 为 comment_tv

我做错了什么?

谢谢

【问题讨论】:

  • 尝试将图像和文本放在另一个相对布局中,这是一个可靠的解决方案,也将 android:layout_marginBottom="10dp" 更改为 marginTop 对您的布局来说似乎也很明智
  • 将textview的重力设为center_vertical
  • @IllegalArgument 将其放置在另一个相对布局中不走运
  • @AM 试过了,但也没用
  • @0xSina 让我试试我已经在我的项目中使用过它并且它有效。这是另一种方法尝试将图像设置为文本视图的背景,我也使用过它,它对我有用

标签: java android android-listview android-linearlayout


【解决方案1】:

您在相对布局中的 pin+文本:

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

<ImageView
        android:id="@+id/pin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_pin"/>
  <TextView 
     android:id="@+id/comment_tv"
     android:layout_width="wrap_content" android:layout_height="wrap_content"
     android:layout_alignTop="@id/pin"
     android:gravity="center"
     android:layout_marginTop="10dp" //set this higher if you need
     android:layout_centerHorizontal="true" //if this text will be not in the center 
    //you can use the "layout_marginLeft" to put whatever you want
  />

</RelativeLayout>

这应该只是你想要的文字

【讨论】:

    【解决方案2】:

    我用你的图片试过了,这是我用底层代码得到的结果。这是你要找的吗?

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/sample"
        android:gravity="center"
        android:text="12"
        android:textSize="18sp" />
    
    </LinearLayout>
    

    下面是这段代码的快照:

    【讨论】:

    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多