【问题标题】:How to set proper position of text inside TextView which is in RelativeLayout?如何在RelativeLayout中的TextView中设置文本的正确位置?
【发布时间】:2014-05-09 14:34:29
【问题描述】:

我有RelativeLayout,里面有两个TextView。这是我当前的 xml 代码,用于 RelativeLayout:

    <RelativeLayout
        android:id="@+id/FullPriceInForeignLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"
        android:background="@drawable/bck_price_foreign"
        android:gravity="center"
        android:paddingBottom="@dimen/home_foreign_margin"
        android:paddingTop="@dimen/home_foreign_margin"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        >

        <TextView
            android:id="@+id/currencyForeign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="USD"
            style="@style/SmallWhiteTextViewWithShadow"
            android:background="@color/orange"
            />

        <TextView
            android:id="@+id/valueInLocal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/currencyForeign"
            android:layout_marginLeft="@dimen/currency_price_margin"
            android:layout_toRightOf="@id/currencyForeign"
            android:text="0.00"
            android:background="@color/orange"
            style="@style/BigWhiteTextViewWithShadow"
            />

    </RelativeLayout>

样式是:

<style name="SmallWhiteTextViewWithShadow">
    <item name="android:textAppearance">@android:style/TextAppearance.Medium.Inverse</item>
    <item name="android:shadowColor">#55000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">0.01</item>
</style>

<style name="BigWhiteTextViewWithShadow">
    <item name="android:textAppearance">@android:style/TextAppearance.Large.Inverse</item>
    <item name="android:textSize">50sp</item>
    <item name="android:shadowColor">#55000000</item>
    <item name="android:shadowDx">2</item>
    <item name="android:shadowDy">2</item>
    <item name="android:shadowRadius">0.02</item>
</style>

它看起来像这样:

我特意将两个小部件的背景都涂成橙色,这样您就可以看到问题所在。 我希望单词 EUR 和 118.0 在顶部具有相同的对齐方式,并且 118.0 在布局中居中,但我不能这样做。

哦,顺便说一句,RelativeLayout 在水平 LinearLayout 的内部并且有自己的权重。

提前致谢, 德维蒂

【问题讨论】:

    标签: android android-layout android-relativelayout textview


    【解决方案1】:

    RelativeLayout 中,您可以使用alignParentTop 属性设置子视图,以在父视图顶部对齐两个视图,还可以使用默认为trueandroid:includeFontPadding 并允许TextView自动为英语以外的其他语言(例如法语的口音)腾出一些空间,如下所示:

    <RelativeLayout
        android:id="@+id/FullPriceInForeignLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"
        android:background="@drawable/bck_price_foreign"
        android:gravity="center"
        android:paddingBottom="@dimen/home_foreign_margin"
        android:paddingTop="@dimen/home_foreign_margin"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp" >
    
        <TextView
            android:id="@+id/currencyForeign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:includeFontPadding="false"
            android:text="USD"
            style="@style/SmallWhiteTextViewWithShadow"
            android:background="@color/orange" />
    
        <TextView
            android:id="@+id/valueInLocal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:includeFontPadding="false"
            android:layout_marginLeft="@dimen/currency_price_margin"
            android:layout_toRightOf="@id/currencyForeign"
            android:text="0.00"
            android:background="@color/orange"
            style="@style/BigWhiteTextViewWithShadow" />
    
    </RelativeLayout>  
    

    Here 你可以找到完美的解决方法(作为Custom TextView 或负边距)。

    【讨论】:

    • 不,没有任何改变。 :/ 118.0 仍在“橙色”区域的下部。
    • android:includeFontPadding="false"@DevetiPutnik
    【解决方案2】:

    添加一个属性,android:gravity="center",如下所述,

            <TextView
            android:id="@+id/valueInLocal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/currencyForeign"
            android:layout_marginLeft="@dimen/currency_price_margin"
            android:layout_toRightOf="@id/currencyForeign" 
    
    
            android:gravity="center"
    
    
            android:text="0.00"
            android:background="@color/orange"
            style="@style/BigWhiteTextViewWithShadow"
            />
    

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多