浮动动作按钮椭圆不变

时间:2015-02-25 08:23:01

标签: android android-5.0-lollipop floating-action-button

我正在尝试为浮动操作按钮实现代码,但由于某种原因,椭圆形没有替换当前按钮。

activity_upcoming.xml:

<ImageButton
    android:id="@+id/add_button"
    android:layout_width="@dimen/diameter"
    android:layout_height="@dimen/diameter"
    android:layout_gravity="end|bottom"
    android:layout_alignBottom="@+id/Upcoming"
    android:layout_alignEnd="@+id/Upcoming"
    android:layout_marginEnd="@dimen/add_button_margin"
    android:layout_marginBottom="@dimen/add_button_margin"
    android:src="@android:drawable/ic_input_add"
    android:tint="@android:color/white"
    android:shape="@drawable/oval_ripple"
    android:elevation="@dimen/elevation_low"
    android:stateListAnimator="@anim/button_elevation"
    />

oval_ripple.xml:

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight">
  <item>
      <shape android:shape="oval">
          <solid android:color="#095578" />
      </shape>
  </item>
</ripple>

Upcoming.java:

public class Upcoming extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upcoming);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        View v;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
            v = inflater.inflate(R.layout.fragment_crime_list, parent, false);
        } else {
            v = super.onCreateView(inflater, parent, savedInstanceState);
        }
        int diameter = getResources().getDimensionPixelSize(R.dimen.diameter);
        Outline outline = new Outline();
        outline.setOval(0, 0, diameter, diameter);
        View addButton = v.findViewById(R.id.add_button);
        return v;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_upcoming, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();


        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

按钮继续保持矩形,颜色不会改变。我已经通过多个网站验证了涟漪代码无济于事。

3 个答案:

答案 0 :(得分:0)

我建议在Github中查看这个git:https://github.com/makovkastar/FloatingActionButton

您可以使用此库创建浮动操作按钮,并且它具有非常好的文档。希望它有所帮助...

答案 1 :(得分:0)

您可以使用许多简单的库来实现此目的,而不是创建自己的按钮。每个都有自己的功能集,您可以使用。 使用它们的优点是它允许您轻松复制涟漪效果并添加其他动画。 看看这个链接:

https://android-arsenal.com/tag/173

干杯!

答案 2 :(得分:0)

尝试更改

<ImageButton
...
android:shape="@drawable/oval_ripple"
/>

<ImageButton
...
android:background="@drawable/oval_ripple"
/>

此外,纹波代码需要minSDKVersion = 21,因此请确保您已正确完成。