如何在Button上叠加TextView?

时间:2016-05-06 10:03:03

标签: android android-layout android-relativelayout

我的XML代码是:

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right">
<Button
    android:id="@+id/btnMyDeals"
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    android:layout_gravity="right"
    android:layout_marginRight="8dp"
    android:text="DEALS"
    android:textSize="18sp"
    android:textColor="@color/white"
    android:background="@drawable/rounded_deals_button"
    android:layout_alignParentTop="true"/>

<TextView
    android:id="@+id/badge_notification_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:background="@android:drawable/ic_notification_overlay"
    android:text="23"
    android:textColor="#FFF"
    android:textSize="12sp"
    android:textStyle="bold" />




</RelativeLayout>

我希望TextView气泡作为通知徽章浮动ButtonTextView可能会漂浮在Button的右上角或左上角。 怎么做?

6 个答案:

答案 0 :(得分:1)

试试这个:

改为使用FrameLayout

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent" >
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true">


        <Button
            android:id="@+id/btnMyDeals"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="8dp"
            android:text="DEALS"
            android:textSize="18sp"
            android:textColor="@color/white"/>

        <TextView
            android:id="@+id/badge_notification_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:drawable/ic_notification_overlay"
            android:text="23"
            android:textColor="#FFF"
            android:textSize="12sp"
            android:textStyle="bold"
            android:elevation="100dp"
            />

    </FrameLayout>

</RelativeLayout>

答案 1 :(得分:1)

请尝试

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right">

   <Button
    android:id="@+id/btnMyDeals"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_gravity="right"
    android:layout_marginRight="8dp"
    android:text="DEALS"
    android:textSize="18sp" />

    <TextView
    android:id="@+id/badge_notification_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:drawable/ic_notification_overlay"
    android:text="23"
    android:textColor="#FFF"
    android:textSize="12sp"
    android:textStyle="bold"
    android:translationZ="5dp"/>
</RelativeLayout>

答案 2 :(得分:1)

嘿,我不幸地遇到了同样的问题,我无法看到它为什么不能按预期工作的任何合理原因,这似乎是一个错误。

我可以解决的唯一方法是让按钮顶部的文字位于顶层视图层次结构中

<FrameLayout>
    <LinearLayout regular layout with button inside/>
    <TextTiew for button overlay />
</FrameLayout>

不漂亮,不高效但有效。

答案 3 :(得分:0)

使用android:layout_alignEnd对齐右上角,android:layout_alignStart对齐左上角。你可以放入&#39; place&#39;的开始&#39;并且&#39;对&#39;代替&#39;结束&#39;对于较低的apis。

android:layout_alignEnd="@id/btnMyDeals"

OR

android:layout_alignStart="@id/btnMyDeals"

将这些行放入textview

答案 4 :(得分:0)

您需要将android:layout_gravity="top|right"android:layout_gravity="top|left"添加到TextView

  <FrameLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  >

    <Button
    android:id="@+id/btnMyDeals"
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    ...
    />

    <TextView
    android:id="@+id/badge_notification_2"
    ...
    android:layout_gravity="top|right"
    />

</FrameLayout>

答案 5 :(得分:0)

要将按钮与textView叠加在一起, 这对我有用。但是我不知道API级别有多低。

android:elevation="8dp"