2016-11-15 94 views
0

我遇到了一個小問題。如何將TextView與佈局中的背景對齊 - Android

我有:

enter image description here

我想:(但是從左邊的文字很少DP)

enter image description here

這可能嗎?這是我的佈局的整個代碼:(@ + ID/txtName的是從截圖TextView的!)

<?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> 

請幫我傢伙!非常感謝你可以給我任何想法。乾杯!

回答

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

+0

偉大的解決方案!謝謝,但是如何讓背景停留在我想要的地方,並且文字從左邊界的幾個dp? –

+0

檢查上面的註釋 –

+0

您可以將'android:paddingStart'添加到您的LinearLayout並設置您希望它離開左邊界的多少個dp。請注意,如果您將其設置爲5dp,您將獲得原始結果。背景發生了什麼? –

0

儘管對於Android Studio來說相當新穎,但我建議您嘗試更改該特定TextView上的佈局引力屬性以將其自身調整到左側角落和/或嘗試強制左側的填充。

雖然這僅僅是一個什麼可以解決這個問題的猜測,我希望它有助於這一觀點的

+0

的txtview?它不起作用。 txtview的 –

0

組佈局重力android:layout_gravity="left"

+0

?它不起作用。 –

0

解決方案:--- 請添加以下名稱的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> 

0

用於線性佈局包圍文本和圖像視圖中的填充屬性應該被設置爲0。

android:padding="5dp" 

這包括左補白&對,因此紫色有一個微小的間隙,去掉填充物,紫色的形狀將達到容器形狀的兩側。

我注意到你只想要紫色的形狀來觸摸RHS,因此我們只想去除paddingLeft。

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

然後TextView的重力屬性必須設置爲「左」

android:gravity="left" 
+0

偉大的解決方案!謝謝,但是如何讓背景停留在我想要的地方,並且文字從左邊界的幾個dp? –

+0

@DawidWalczyk添加paddingLeft到TextView,請投票我的答案,如果它幫助。 歡迎您。 – RamanSB