【问题标题】:Adding ripple effect to stacked views in Android Studio在 Android Studio 中为堆叠视图添加波纹效果
【发布时间】:2017-05-30 16:09:11
【问题描述】:

我正在尝试对“素食”和“非素食”按钮实现涟漪效应,但在这两种情况下,它都被用于按钮标签的 TextView 阻止。下面是我的 XML 文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:clipToPadding="false"
    android:clipChildren="false"
    tools:context="com.techpappy.whattoeat.MainActivity"
    android:background="@color/cherryRed">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="What would you prefer ?"
        android:layout_centerHorizontal="true"
        android:textSize="20sp"
        android:background="@color/cherryRed"
        android:layout_marginTop="30dp"
        android:padding="10dp"
        android:elevation="4dp"
        android:textColor="@color/wineBrown"
        android:id="@+id/textView" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:id="@+id/linearLayout">

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

            <ImageButton
                android:id="@+id/vegButton"
                android:layout_width="300dp"
                android:layout_height="50dp"
                android:src="@drawable/button_red"
                android:clickable="true"
                android:background="?attr/selectableItemBackgroundBorderless"/>

            <TextView
                android:layout_width="200dp"
                android:layout_height="50dp"
                android:text="Vegetarian"
                android:textSize="30sp"
                android:layout_gravity="center"
                android:gravity="center"
                android:textColor="#6B2737"
                android:fontFamily="monospace"
                android:textStyle="bold"/>

        </FrameLayout>

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp">

            <ImageButton
                android:id="@+id/nonvegbutton"
                android:layout_width="300dp"
                android:layout_height="50dp"
                android:src="@drawable/button_red"
                android:clickable="true"
                android:background="?attr/selectableItemBackgroundBorderless"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Non Vegetarian"
                android:textSize="30sp"
                android:layout_gravity="center"
                android:textColor="#6B2737"
                android:fontFamily="monospace"
                android:textStyle="bold"/>

        </FrameLayout>
    </LinearLayout>



</RelativeLayout>

【问题讨论】:

  • 您可以直接使用按钮来代替 FrameLayout。您可以在同一个组件中设置背景和文本,在本例中为 Button。
  • 这是我做的第一件事,但我无法为其添加材料设计效果(海拔、波纹等)。它们仅在我使用 ImageButton 时才起作用

标签: android xml rippledrawable


【解决方案1】:

我发现问题不在于TextView,而在于ImageButton。我删除了 ImageButtons 并使用了Button(保持 TextViews 原样)。我使用android:backgruond = "?attr/selectableItemBackgroundBorderless" 将波纹效果应用于按钮并为它们提供我想要的颜色,我使用了android:tint 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多