RecyclerView 行的 TextView 中的居中文本
Center text in the TextView of a RecyclerView row
我的应用程序中有一个 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 预览显示如下屏幕截图所示:
所以,看起来红圈中的字母是居中的,第一个问题来了。在模拟器的屏幕截图中,很容易注意到那些圆圈中的所有字母都不在中心。我怎样才能让他们居中?
现在是第二期。在模拟器屏幕截图中,如果您查看列表的第三项 ("Something3"),它在粗体文本下方没有描述文本。如果没有描述,是否可以在行中垂直居中?
列表中的圆圈是文本视图的背景,并且是单独 xml 文件中的形状 (circle.xml):
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/primary"/>
</shape>
这里是 more words,查看 ID 为 android:id="@+id/description"
的 TextView
并检查其 Visiblity
,它被设置为 gone
如果你将它设置为 visible
两个 TextView
都会在中间,但是如果 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()
或java这边,检查字符串是否为空
if(!TextView.getText().toString().isEmpty()){ // if it is not empty
TextView.setVisibility(0); // zero means visible..
}
如果您的目标低于 api 9,请将其放入 if 语句中 TextView.getText().toString().length() != 0
我的应用程序中有一个 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 预览显示如下屏幕截图所示:
所以,看起来红圈中的字母是居中的,第一个问题来了。在模拟器的屏幕截图中,很容易注意到那些圆圈中的所有字母都不在中心。我怎样才能让他们居中?
现在是第二期。在模拟器屏幕截图中,如果您查看列表的第三项 ("Something3"),它在粗体文本下方没有描述文本。如果没有描述,是否可以在行中垂直居中? 列表中的圆圈是文本视图的背景,并且是单独 xml 文件中的形状 (circle.xml):
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/primary"/>
</shape>
这里是 more words,查看 ID 为 android:id="@+id/description"
的 TextView
并检查其 Visiblity
,它被设置为 gone
如果你将它设置为 visible
两个 TextView
都会在中间,但是如果 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()
或java这边,检查字符串是否为空
if(!TextView.getText().toString().isEmpty()){ // if it is not empty
TextView.setVisibility(0); // zero means visible..
}
如果您的目标低于 api 9,请将其放入 if 语句中 TextView.getText().toString().length() != 0