【问题标题】:How to align TextView with background in Layout - Android如何在布局中将 TextView 与背景对齐 - Android
【发布时间】:2016-11-15 22:25:31
【问题描述】:

我有一个小问题。

我有:

我想要:(但文字距离左边几 dp)

有可能吗?这是我的布局的完整代码:(@+id/txtname 是屏幕截图中的文本视图!)

    <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/md_brown_100"
    android:orientation="vertical"
    android:gravity="center"
    android:paddingTop="10dp"
    android:paddingBottom="10dp" >


    <LinearLayout android:id="@+id/list_offer_item_container"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="@drawable/shape"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center"

            android:layout_gravity="center_vertical">

            <TextView android:id="@+id/list_offer_badge_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/list_offer_item_container"
                android:textColor="@color/md_amber_700"
                android:textSize="12sp"
                android:visibility="gone"
                android:text=""/>
        </LinearLayout>

        <LinearLayout
            android:layout_height="150dp"
        android:orientation="vertical"
        android:padding="5dp"
            android:weightSum="1"
            android:layout_width="150dp">

            <ImageView
                android:id="@+id/imgcreditcompany"
                android:scaleType="fitXY"
                android:layout_gravity="center_horizontal"

                android:layout_above="@+id/txtname"
                  android:contentDescription="@string/app_name"
                android:layout_height="48dp"
                android:layout_width="48dp" />


            <TextView
                android:id="@+id/txtname"
                android:gravity="center_vertical"
                android:background="@drawable/ic_dollar_ss"
                android:layout_height="30dp"
                android:layout_marginTop="5dp"
                android:textColor="@color/AliceBlue"
                android:textSize="18sp"
                android:text="Name"
                android:textAllCaps="false"
                android:textStyle="normal|bold"
                android:layout_width="153dp" />

            <TextView
                android:id="@+id/txtdesc"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_marginTop="1dp"
                android:maxLines="3"

                android:textColor="#80869c"
                android:textSize="@dimen/textsizeearncredit_desc"
                android:text="This is a description of the offer and this is just a demo to show off 3 lines stacking correctly on top of each other"
                android:layout_weight="0.55"
                android:layout_width="140dp" />
        </LinearLayout>

        <ImageView
            android:id="@+id/nextArrow"
            android:layout_alignParentRight="true"
            android:tint="@color/md_grey_300"
            android:rotation="180"
            android:layout_width="32dp"
            android:visibility="gone"
            android:layout_marginRight="16dp"
            android:layout_gravity="center"
            android:layout_centerVertical="true"
            android:layout_height="32dp"
            android:contentDescription="@string/app_name"
            android:padding="@dimen/two" />

    </LinearLayout>


</RelativeLayout>

请帮帮我!非常感谢你可以给我任何想法。干杯!

【问题讨论】:

    标签: java android xml android-layout textview


    【解决方案1】:

    问题是您的 LinearLayout 有 5dp 的填充,这使您的“邀请朋友”TextView 远离边缘。

    替换

    <LinearLayout
            android:layout_height="150dp"
            android:orientation="vertical"
            android:padding="5dp"
            android:weightSum="1"
            android:layout_width="150dp">
    

    <LinearLayout
            android:layout_height="150dp"
            android:orientation="vertical"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingEnd="5dp"
            android:weightSum="1"
            android:layout_width="150dp">
    

    这样你就不会在左边有填充。要在描述文本上进行补偿,请将 android:paddingStart="5dp" 添加到您的 TextView txtdesc

    【讨论】:

    • 很好的解决方案!谢谢,但是如何让背景停留在我想要的位置,以及从左边框开始的几个 dp 的文本?
    • 查看上面的评论
    • 您可以将 android:paddingStart 添加到您的 LinearLayout 并设置您希望它远离左边框的 dp 数。请注意,如果将其设置为 5dp,您将获得原始结果。后台发生了什么?
    • 有效!非常感谢朋友
    【解决方案2】:

    虽然我对 Android Studio 相当陌生,但我建议您尝试更改特定 TextView 上的布局重力属性以将自身调整到左角和/或尝试强制向左填充。

    虽然这只是猜测可以解决的问题,但我希望它有所帮助

    【讨论】:

      【解决方案3】:

      将该视图的布局重力设置为android:layout_gravity="left"

      【讨论】:

        【解决方案4】:

        包含文本和图像视图的线性布局的填充属性应设置为 0。

        android:padding="5dp"
        

        这包括左右填充,因此紫色有轻微间隙,移除填充,紫色形状将到达容器形状的两侧。

        我注意到您只希望紫色形状接触 RHS,因此我们只想删除 paddingLeft。

          android:paddingRight="5dp"
          android:paddingLeft="0dp"
          android:paddingBottom="5dp"
          android:paddingTop="5dp"
        

        TextView 的重力属性必须设置为 'left'

          android:gravity="left"
        

        【讨论】:

        • 很好的解决方案!谢谢,但是如何让背景停留在我想要的位置,以及从左边框开始几dp的文字?
        • @DawidWalczyk 将 paddingLeft 添加到 TextView,如果有帮助,请投票给我的答案。欢迎您。
        【解决方案5】:

        解决方案:--- 请在名称 textview 中添加以下属性。 android:gravity="center_horizontal"

        你的代码:

        <?xml version="1.0" encoding="utf-8"?>
        
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingBottom="10dp"
        android:paddingTop="10dp">
        
        
        <LinearLayout
            android:id="@+id/list_offer_item_container"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:paddingBottom="10dp"
            android:paddingTop="10dp">
        
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:gravity="center"
        
                android:orientation="vertical">
        
                <TextView
                    android:id="@+id/list_offer_badge_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_above="@+id/list_offer_item_container"
                    android:text=""
                    android:textSize="12sp"
                    android:visibility="gone" />
            </LinearLayout>
        
            <LinearLayout
                android:layout_width="150dp"
                android:layout_height="150dp"
                android:orientation="vertical"
                android:padding="5dp"
                android:weightSum="1">
        
                <ImageView
                    android:id="@+id/imgcreditcompany"
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:layout_above="@+id/txtname"
                    android:layout_gravity="center_horizontal"
                    android:contentDescription="@string/app_name"
                    android:scaleType="fitXY" />
        
        
                <TextView
                    android:id="@+id/txtname"
                    android:layout_width="153dp"
                    android:layout_height="30dp"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="5dp"
                    android:gravity="center_horizontal"
                    android:text="Name"
                    android:textAllCaps="false"
                    android:textSize="18sp"
                    android:textStyle="normal|bold" />
        
                <TextView
                    android:id="@+id/txtdesc"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="1dp"
                    android:layout_weight="0.55"
        
                    android:gravity="center_horizontal"
                    android:maxLines="3"
                    android:text="This is a description of the offer and this is just a demo to show off 3 lines stacking correctly on top of each other"
                    android:textColor="#80869c" />
            </LinearLayout>
        
            <ImageView
                android:id="@+id/nextArrow"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_gravity="center"
                android:layout_marginRight="16dp"
                android:contentDescription="@string/app_name"
                android:rotation="180"
                android:visibility="gone" />
        
        </LinearLayout>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-11
          • 1970-01-01
          • 2012-11-02
          • 2011-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多