如何将文本与我想要对齐的任何位置对齐?

时间:2018-06-14 15:10:26

标签: android android-layout

这基本上就是我希望我的布局看起来像:

enter image description here

必须有一个空间将imageView与Text分开。在中心的确定按钮,但我认为主要的挑战是确保粗体文本与常规文本非常紧密地对齐(几乎触及尖端)并且在其上方。此外,增加的挑战是所有这一切必须使用ONLY线性布局完成。到目前为止,我一直在使用垂直方向线性布局,然后是水平方向线性布局。水平方向线性布局覆盖了imageView和常规文本。我的主要问题是我无法将粗体文本和常规文本按照我需要的方式对齐。

顺便说一句,我摆脱了所有的id和图像,因为这些都是私有的,但添加它们应该没问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

<TextView
    android:id="@+id/"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="0dp"
    android:text="Bold Text"
    android:textAlignment="center"
    android:textColor="@color/black"
    android:textSize="18sp"
    android:textStyle="bold" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="13dp"
        android:layout_marginTop="12dp"
        android:src="@drawable/" />

    <TextView
        android:id="@+id/"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="Regular Text"
        android:textColor="@color/black" />
</LinearLayout>

<Button
    android:id="@+id/"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Ok"
    />

</LinearLayout>

4 个答案:

答案 0 :(得分:4)

除非这是针对学校项目或其他事情,否则我实际上不会使用这样的嵌套布局。

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="10dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:scaleType="fitXY"
        android:layout_gravity="center_vertical"
        app:srcCompat="@drawable/ic_launcher_background" />

编辑:

registration

答案 1 :(得分:0)

父级应该是垂直线性布局,就像现在一样。

  
    
      

第一个孩子应该是水平线性布局

             
        
          
            

第一个孩子应该是ImageView

                         

第二个孩子应该是BOLD TEXT with gravity = center_horizo​​ntal

          
        
      
             

你父母的第二个孩子应该是普通文本Blah Blah Blah,重力= center_horizo​​ntal

             

父母的第三个孩子应该是重力= center_horizo​​ntal

的确定按钮     
  

如果你想在事情之前添加更多空间,请给他们android:marginStart =&#34; some_value&#34;

答案 2 :(得分:0)

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:padding="16dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/img"
            android:layout_width="75dp"
            android:layout_height="50dp"
            android:layout_marginEnd="16dp"
            android:src="@drawable/dummy_camera" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv1"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:text="Bold Text"
                android:gravity="bottom"
                android:textColor="@color/black"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tv2"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:gravity="top"
                android:text="Regular Text"
                android:textColor="@color/black" />
        </LinearLayout>

    </LinearLayout>

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ok" />
</LinearLayout>

答案 3 :(得分:-1)

将其添加到TextView参数:

android:baselineAlignBottom="true"