在RecyclerView行的TextView中居中文本

时间:2015-01-24 22:18:56

标签: android xml material-design android-recyclerview recycler-adapter

我的应用中有一个RecyclerView。下面是其行的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="48dp">

    <TextView
        android:paddingLeft="-1.5dp"
        android:paddingTop="-1.5dp"
        android:textColor="#fff"
        android:id="@+id/text_with_icon"
        android:layout_gravity="center_vertical"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="A"
        android:textAlignment="center"
        android:textSize="22sp"
        android:gravity="center"
        android:background="@drawable/circle"
        android:layout_marginLeft="18dp"
        android:layout_marginStart="18dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:textColor="#000"
        android:gravity="center_vertical"
        android:textSize="16sp"
        android:textStyle="bold"
        android:layout_gravity="left|top"
        android:id="@+id/list_title"
        android:layout_marginLeft="72dp"
        android:padding="4dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dummy text"
        android:layout_marginStart="72dp"
        android:layout_toRightOf="@+id/text_with_icon" />

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="14dp"
        android:layout_marginLeft="77dp"
        android:textStyle="normal"
        android:textColor="#000"
        android:textSize="12sp"
        android:gravity="center_vertical"
        android:text="Lorem ipsum dolor sit amet, consectetur..."
        android:layout_alignLeft="@+id/list_title"
        android:layout_alignStart="@+id/list_title"
        android:layout_alignParentBottom="true"
        android:layout_gravity="left|bottom"
        android:layout_marginBottom="8dp"/>
</FrameLayout>

Android Studio预览显示在以下屏幕截图中: custom row template

所以,看起来红色圆圈中的字母很好地居中,这是第一个问题。在模拟器的屏幕截图中,很容易注意到这些圆圈中的所有字母都不在中心。我怎样才能让他们居中? Emulator screenshot

现在是第二个问题。在模拟器截图中,如果查看列表的第三项(“Something3”),则在粗体文本下方没有描述文本。如果没有描述,是否可以在行中垂直居中? 列表中的圆圈是textview的背景,并且是单独的xml文件(circle.xml)中的形状:

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@color/primary"/>
</shape>

1 个答案:

答案 0 :(得分:1)

这是更多字词,查看ID为TextView的{​​{1}}并检查其android:id="@+id/description",如果Visiblity,则设置为gone你把它设置为visibleTextView的两个gone都会在中间,但如果TextView你的上面Gravity总是在你看到的顶部......和魔法继续<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/text_with_icon" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_gravity="center_vertical" android:layout_marginLeft="18dp" android:layout_marginStart="18dp" android:background="@drawable/circle" android:gravity="center" android:paddingLeft="-1.5dp" android:paddingTop="-1.5dp" android:text="A" android:textColor="#fff" android:textSize="22sp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center_vertical" android:layout_toRightOf="@+id/text_with_icon" android:orientation="vertical" > <TextView android:id="@+id/list_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="4dp" android:text="Dummy text" android:textColor="#000" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/description" android:layout_width="wrap_content" android:layout_height="14dp" android:text="Lorem ipsum dolor sit amet, consectetur..." android:textColor="#000" android:visibility="gone" android:textSize="12sp" android:textStyle="normal" /> </LinearLayout> ..(我指的是这个解决方案)

getView()

if(!TextView.getText().toString().isEmpty()){ // if it is not empty TextView.setVisibility(0); // zero means visible.. } 或java方面,检查字符串是否为空

TextView.getText().toString().length() != 0

如果你的目标是api 9以下,请将其放在if语句{{1}}