【问题标题】:Floating Action Button Oval not changing浮动操作按钮椭圆形不变
【发布时间】:2015-02-25 08:23:01
【问题描述】:

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

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>

即将到来的.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);
    }
}

按钮继续保持矩形形状,颜色不变。我已经在几个网站上验证了涟漪代码,但均无济于事。

【问题讨论】:

  • ImageButton 上没有 android:shape 属性。也许你的意思是android:background

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


【解决方案1】:

尝试改变

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

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

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

【讨论】:

  • 谢谢。背景变成了椭圆形。不幸的是,阴影仍然是方形的。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以使用许多简单的库来实现此目的,而不是创建自己的按钮。每个都有自己的一组您可以使用的功能。 使用这些的好处是它可以让您轻松复制波纹效果并添加其他动画。 看看这个链接:

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

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2017-03-04
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多