我正在制作导航抽屉我希望它看起来像Gmail中的导航抽屉。但是我的TextView中间带有字母的圆圈有些麻烦。我有android:重力设置为中心但它仍然不完全在中间。
它被移到了底部,因此看起来很糟糕。
我也尝试过创建自定义视图,但我遇到了同样的问题。
有没有人知道如何解决这个问题?
header.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="300dp"
android:layout_height="168dp">
<ImageView
android:layout_width="300dp"
android:layout_height="168dp"
android:src="@mipmap/header_background"
android:scaleType="fitXY"
android:id="@+id/imageView2" />
<TextView
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:layout_above="@+id/subtitle"
android:gravity="center"
android:text="M"
android:textAllCaps="true"
android:textSize="48sp"
android:textColor="@color/actionbar"
android:fontFamily="sans-serif-medium"
android:background="@drawable/circle" />
<RelativeLayout
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:id="@+id/subtitle">
<LinearLayout
android:layout_centerVertical="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:text="My Name"
android:textSize="14sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-medium"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:text="my.mail@my.server"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:fontFamily="sans-serif"/>
</LinearLayout>
</RelativeLayout>
circle.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/white"/>
<size
android:width="64dp"
android:height="64dp"/>
</shape>
由于
编辑:我将“center_horizontal”更改为“center”,因为这是我在拍摄屏幕截图时的代码中所用的内容
答案 0 :(得分:0)
你是对的:在TextView中居中文本不会使文本正确居中。给定的文本总是稍微移位,因为在文本的顶部添加了一些填充。这就是您需要创建自定义视图,设置Paint对象然后将文本正确放置在视图中的原因。
首先,创建一个Paint对象来测量文本:
Paint mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setTextAlign(Paint.Align.CENTER);
mPaint.setColor(Color.BLUE);
mPaint.setTextSize(12);
然后,在customView的onDraw方法中,执行以下操作:
canvas.drawText(mText, getWidth()/2, getHeight()/2, mPaint);
答案 1 :(得分:0)
我想你要修改android:textAlignment =&#34; center&#34;并将文本置于文本视图中心,而不是将textview集中在其容器中
答案 2 :(得分:0)
我认为你已经给出了textview的背景知识,因此它无法正常工作。因为你有64 dp的绘制圆,而且textview的宽度是64,所以它可能无法正常工作。
因此,请检查以下2个选项。
1)尝试增加textview的宽度或减小圆的宽度并检查。
如果它不起作用,那么你需要在第二个解决方案下面申请。
2)将圆圈设置为布局,然后在其中添加textview,如下所示。
<RelativeLayout
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:layout_above="@+id/subtitle"
android:gravity="center"
android:background="@drawable/circle" />
<TextView
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_centerInParent="true"
android:gravity="center"
android:text="M"
android:textAllCaps="true"
android:textSize="48sp"
android:textColor="@color/actionbar"
android:fontFamily="sans-serif-medium"/>
</RelativeLayout>