【问题标题】:Android view class - drawing View over button - background vs foreground?Android视图类 - 在按钮上绘制视图 - 背景与前景?
【发布时间】:2014-11-10 19:27:27
【问题描述】:

我在 ImageButton 上绘制了一个 ImageView(一个 50% 透明的图标),但是当我单击 ImageButton 时图标消失(此时触发了一个 Activity 转换)。这看起来很糟糕......

在不将图标实际放入 ImageButton 的 src-File 的情况下,最好的方法是什么?有没有办法将可绘制对象设置为背景或前景?这两个属性到底是干什么用的?我找不到任何关于 android:foreground...

顺便说一句:我正在使用新的 Lollipop 共享元素转换并在 nexus 9 上进行测试。

<Relative Layout...>
<ImageButton
    android:id="@+id/imageView1"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"
    android:layout_width="400dp"
    android:layout_height="250dp"
    android:src="@drawable/call1"
    android:foreground="@drawable/phone" <!-- Does this make any sense?-->
    android:transitionName="@string/trans_call_pic"
    android:onClick="clickCall"
    />

<ImageView
    android:id="@+id/imageButton1"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:src="@drawable/phone"
    android:layout_alignBottom="@id/imageView1"
    android:alpha="0.5"
    android:layout_marginLeft="14dp"
    />
</RelativeLayout

【问题讨论】:

    标签: android android-5.0-lollipop material-design


    【解决方案1】:

    android:foreground 属性用于前景选择器(添加到 FrameLayout)。它不是为了简单地绘制图像。

    一种解决方案是将按钮和图像包装在容器视图中,并将您的过渡放在容器上。这样,两个子视图将被视为一个。

    【讨论】:

    • 好吧,听起来不错。你有一些资源可以阅读前景主题吗?
    【解决方案2】:

    尝试将前景选择器添加到您的视图中。您可以扩展ImageButton,覆盖onDraw(),并在调用super.onDraw() 之后绘制前景选择器。这将确保前景选择器绘制在整个ImageButton 之上。更详细的说明可以在here找到。

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多