【问题标题】:Overlapped Textview when text size increased + RelativeLayout文本大小增加时重叠的Textview + RelativeLayout
【发布时间】:2016-03-15 07:35:08
【问题描述】:

我已经尝试了所有方法,但还没有成功。

发生了什么。当标题文本较小时,它应该位于父级的中心,完美地工作,但是当文本大小很大时,它会与左侧组件重叠

我想要什么:它不应该重叠,而是出现在 settings Textview 的下一个。当尺寸增加时应该调整它。

小号

大号

代码

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@android:color/darker_gray" >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Settings"
            android:gravity="center_vertical"
            android:layout_alignParentLeft="true"
            android:textColor="@android:color/holo_orange_dark"
            android:textSize="16.0sp" />


        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
            android:padding="4dp"
            android:gravity="center"
            android:layout_toLeftOf="@+id/txtBack"
            android:textColor="@android:color/white"
            android:textSize="19sp" />
</RelativeLayout>

【问题讨论】:

  • 你为什么使用相对布局而不是工作会相对布局。

标签: android android-layout android-relativelayout android-framelayout


【解决方案1】:

因为您正在为这两个 TextView 使用 match_parent,这就是为什么它们会重叠,根据您的代码,您可以尝试为第二个 TextView 添加修复填充。例如,我们认为第一个TextView的文本“设置”的宽度是100dp,所以我们可以改变代码如下。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@android:color/darker_gray" >


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Settings"
        android:gravity="center_vertical"
        android:layout_alignParentLeft="true"
        android:textColor="@android:color/holo_orange_dark"
        android:textSize="16.0sp" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        android:paddingLeft="100dp"
        android:paddingRight="100dp"            
        android:gravity="center"
        android:layout_toLeftOf="@+id/txtBack"
        android:textColor="@android:color/white"
        android:textSize="19sp" />
</RelativeLayout>

【讨论】:

  • 感谢它对我的帮助,但它必须是单行的。并且字符串应该是可见的而不是点点
  • 明白,那我觉得你需要使用自动缩放文本视图,这就是你需要的。 stackoverflow.com/a/5535672/1297615
【解决方案2】:

将 id 设置为您的第一个 TextView,然后设置第二个 TextView toRightOf 第一个。

像这样

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@android:color/darker_gray" >


    <TextView

        android:id="@+id/textview1"

        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Settings"
        android:gravity="center_vertical"
        android:layout_alignParentLeft="true"
        android:textColor="@android:color/holo_orange_dark"
        android:textSize="16.0sp" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:layout_toRightOf="@id/textview1"

        android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
        android:padding="4dp"
        android:gravity="center"
        android:layout_toLeftOf="@+id/txtBack"
        android:textColor="@android:color/white"
        android:textSize="19sp" />
</RelativeLayout>

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    试试这个,

    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@android:color/darker_gray" >
    
    
        <TextView
            android:id="@+id/txtSetting"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Settings"
            android:gravity="center_vertical"
            android:layout_alignParentLeft="true"
            android:textColor="@android:color/holo_orange_dark"
            android:textSize="16.0sp" />
    
    
        <TextView
            android:layout_toRightOf="@+id/txtSetting"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
            android:padding="4dp"
            android:gravity="center"
            android:layout_toLeftOf="@+id/txtBack"
            android:textColor="@android:color/white"
            android:textSize="19sp" />
    </RelativeLayout>
    

    【讨论】:

      【解决方案4】:

      使用 layout_toLeftOf 、alignParentLeft 和 alignParentRight

          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Settings"
              android:id="@+id/txtBack"
                        android:gravity="center_vertical"
              android:layout_alignParentLeft="true"
                      android:layout_toLeftOf="@+id/selectaccount"
              android:textColor="@android:color/holo_orange_dark"
             android:textAppearance="?android:attr/textAppearanceMedium" />
      
      
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
              android:padding="4dp"
              android:gravity="center"
              android:layout_alignParentRight="true"
      
              android:textColor="@android:color/white"
              android:textAppearance="?android:attr/textAppearanceMedium" />
      

      【讨论】:

      • 文本很小怎么办??无论是小还是大,它都应该在父母的中心
      【解决方案5】:

      只需将您的代码替换为以下:

      <RelativeLayout
           android:layout_width="match_parent"
           android:layout_height="56dp"
           android:background="@android:color/darker_gray" >
      
      
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="match_parent"
              android:text="Settings"
              android:gravity="center_vertical"
              android:layout_alignParentLeft="true"
              android:textColor="@android:color/holo_orange_dark"
              android:textSize="16.0sp"
              android:id="@+id/txtSettings" />
      
      
          <TextView
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
              android:padding="4dp"
              android:gravity="center"
              android:layout_toRightOf="@+id/txtSettings"
              android:layout_toLeftOf="@+id/txtBack"
              android:textColor="@android:color/white"
              android:textSize="19sp" />
       </RelativeLayout>
      

      【讨论】:

      • 但它不是父级的中心(相对布局)。尝试使用 4 个文本单词
      • 在中心标题文本视图中使用 CenterInParent="true"
      • 你还在使用 txtBack 吗?因为在当前代码中我看不到 txtBack 声明。所以请检查它,如果你没有使用,请告诉我。
      【解决方案6】:

      将第二个文本视图更改为:

      <TextView
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:text="hiiiiiiiiiiiii StackOverflower!!!!!!!!!!!"
              android:padding="4dp"
              android:gravity="center"
              android:layout_toRightOf="@+id/firstTextview"
              android:textColor="@android:color/white"
              android:textSize="19sp" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        相关资源
        最近更新 更多