Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在TextView中对齐第一行_Android_Android Layout - Fatal编程技术网

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想要的?