Android中的星形按钮

我想在我的应用程序中放一个星形按钮,就像评级明星一样。 我已经尝试使用一颗星评级栏,但不幸的是它不能用作按钮。

我希望它可以作为一个按钮工作,如果所选状态的背景是黄色的话会更好……有什么建议吗? 谢谢。

  • 如何为button的按下状态设置不同的颜色?
  • 如何以编程方式更换/更改图像buttonandroid
  • button返回到MainActivity
  • 如何以编程方式将焦点设置为button小部件?
  • 以编程方式使用XML布局作为模板创buildandroidbutton
  • 将图像从Android上的可绘制资源保存到SD卡
  • Android:如何处理button点击
  • 不包含多行的button文本
  • 当然,使用这样的布局资源:

     

    您可以将此配置与这样定义的状态列表drawable配对,该状态列表在res/drawable/star.xml保存为XML文件:

     < ?xml version="1.0" encoding="utf-8"?>           

    以下是Android本身打包的图片:

    • 离
    • 上
    • 残
    • 按下 按下
    • 关闭按下 关闭按下

    您可以使用内置的btn_star statelist drawable。

      //Needed to remove the button background 

    我希望我最喜欢的按钮表现得像一个checkbox,所以这对我很有用,而不必在我的onClickListener中添加任何图像切换逻辑。 在我的Java代码中,我可以使用myFavoriteToggleButton.isChecked()来确定所采取的操作。

       

    这是一个非常好的教程,用于创建自定义按钮,从头到尾。 如果您想要为每个按钮状态变得非常狡猾,您甚至可以创建自己的星形图像。

    http://www.youtube.com/watch?v=zXXCFmfJMNw

    只需在您的活动中添加以下代码:

     final ImageButton ButtonStar = (ImageButton) findViewById(R.id.star); ButtonStar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (isEnable){ ButtonStar.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),android.R.drawable.btn_star_big_off)); }else{ ButtonStar.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),android.R.drawable.btn_star_big_on)); } isEnable = !isEnable; } }); 

    注意:define boolean isEnable = false global。 这是我的ImageButton xml代码:

      

    Button StateListDrawable怎么样? 试试吧,哥们:)

    http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

    我担心Android没有这样的内置控件。 您将需要使用Button (或ImageButton ),并将背景(或图像资源)设置为具有状态的drawable 。

    您可以尝试将其作为文本视图插入。 这是我发现这样做最简单的方法。

    在布局xml中,我将其添加为文本视图

      

    然后在代码中编写了如下函数。

     boolean isfavourite; public void onToggleStar(View view){ TextView favouriteStar = (TextView) view; if(!isfavourite){ // if the star is not already selected and you select it isfavourite = true; favouriteStar.setTextColor(Color.parseColor("#FFD600")); }else{ // if the star is already selected and you unselect it isfavourite = false; favouriteStar.setTextColor(Color.parseColor("#9E9E9E")); } } 

    可能需要使用一个有助于Button (或ImageButton )状态的selector 。 参考这个