Android 在TextView中对齐第一行
我有水平方向的Android 在TextView中对齐第一行,android,android-layout,Android,Android Layout,我有水平方向的LinearLayout,其中包含ImageView和TextView(图像在左侧,文本在右侧)。我想将TextView的第一行(即使有多行)与ImageView的中心对齐。我怎样才能做到这一点 我的当前代码,它将整个TextView居中,而不仅仅是第一行: <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:ori
LinearLayout
,其中包含ImageView
和TextView
(图像在左侧,文本在右侧)。我想将TextView
的第一行(即使有多行)与ImageView
的中心对齐。我怎样才能做到这一点
我的当前代码,它将整个TextView
居中,而不仅仅是第一行:
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/icon_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_distance" />
<TextView
android:duplicateParentState="true"
android:gravity="center_vertical"
style="@style/taskAddressText"
android:id="@+id/task_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
您可以通过在运行时获取ImageView的高度,将TextView的第一行设置为ImageView的中心,并将该高度除以2以获取ImageView的中心,然后将TextView的上边距或填充设置为如下所示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@color/colorPrimary"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/task_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sample address "/>
</LinearLayout>
将像素转换为dp
public int convertPixelsToDp(int px){
DisplayMetrics metrics = getResources().getDisplayMetrics();
return (int) (px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));
}
您可以通过在运行时获取ImageView的高度,将TextView的第一行设置为ImageView的中心,并将该高度除以2以获取ImageView的中心,然后将顶部边距或填充设置为TextView,如下所示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@color/colorPrimary"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/task_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sample address "/>
</LinearLayout>
将像素转换为dp
public int convertPixelsToDp(int px){
DisplayMetrics metrics = getResources().getDisplayMetrics();
return (int) (px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));
}
您可以将文本视图的上边距设置为图像视图大小的一半,然后它将始终从图像视图的中心开始
Text View Top Margin = Image view Height /2
您可以将文本视图的上边距设置为图像视图大小的一半,然后它将始终从图像视图的中心开始
Text View Top Margin = Image view Height /2
相反,使用constraintLayout,创建一个不带文本的不可见文本视图,以确保它始终是一行。然后将不可见文本视图与实际文本视图的顶部和开头对齐
然后将imageview约束到不可见的textview。使用constraintLayout,创建一个不带文本的不可见textview,以确保它始终是一行。然后将不可见文本视图与实际文本视图的顶部和开头对齐
然后将imageview约束到不可见的文本视图。我不知道是否可以实现,但是使用两个文本视图怎么样?我不知道是否可以实现,但是使用两个文本视图怎么样?在文本视图中有两个
安卓:gravity=“center\u vertical”
。。。这是故意的吗?在文本视图中有两个android:gravity=“center\u vertical”。。。这是有意的吗?您是否将ImageView的高度保存在一个维度中并引用它,或者如何实现此目的?您是否将ImageView的高度保存在一个维度中并引用它,或者如何实现此目的?您能否解释一下您正在做什么以及它为什么工作?因为我已经用我的布局测试过了,图标以两行文本视图居中,这似乎不是OP想要的。你能解释一下你在做什么以及为什么它能工作吗?因为我已经用我的布局测试过了,图标以两行文本视图居中,这似乎不是OP想要的?