我的应用中有一个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”),则在粗体文本下方没有描述文本。如果没有描述,是否可以在行中垂直居中? 列表中的圆圈是textview的背景,并且是单独的xml文件(circle.xml)中的形状:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/primary"/>
</shape>
答案 0 :(得分:1)
这是更多字词,查看ID为TextView
的{{1}}并检查其android:id="@+id/description"
,如果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()
在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}}
中