收藏夹按钮Android [英] Favourite button Android

查看:112
本文介绍了收藏夹按钮Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一个食谱应用程序,并希望创建一个最喜欢的按钮,用户将点击灰色的星形按钮,它将变为一个黄色的星形按钮(我有一个灰色的星星和一个黄色的星星的图片),一旦您点击主屏幕上的收藏夹链接,所选的收藏夹将显示在列表中

i'm making a recipe application and would like to create a favourite button where the user will click on the grey star button and it will change into a yellow star button(i have a picture of a grey star and a yellow star), the selected favourites will then display in a list once you click on the favourites link on the home screen

我在布局中有以下代码

 <ImageButton android:id="@+id/favouritebtn"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:src="@drawable/staroff"
      android:background="#00ffffff"
      android:onClick="onToggleStar"
      android:clickable="true"/>

任何人都可以帮助我编写代码,这样当我点击星形时它会转向黄色并添加到收藏列表

Can anyone help me in how to write the code so that when i click on the star it will turn yellow and add to the favourite list

更新

FavouriteBtn.java

FavouriteBtn.java

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class FavouriteBtn extends Activity {


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

    final ImageButton imgButton =(ImageButton)findViewById(R.id.favbtn);
    imgButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            boolean isFavourite = readState();

            if (isFavourite) {
                imgButton.setBackgroundResource(R.drawable.staroff);
                isFavourite = false;
                saveState(isFavourite);

            } else {
                imgButton.setBackgroundResource(R.drawable.staron);
                isFavourite = true;
                saveState(isFavourite);

            }

        }
    });

}

private void saveState(boolean isFavourite) {
    SharedPreferences aSharedPreferences = this.getSharedPreferences(
            "Favourite", Context.MODE_PRIVATE);
    SharedPreferences.Editor aSharedPreferencesEdit = aSharedPreferences
            .edit();
    aSharedPreferencesEdit.putBoolean("State", isFavourite);
    aSharedPreferencesEdit.commit();
}

private boolean readState() {
    SharedPreferences aSharedPreferences = this.getSharedPreferences(
            "Favourite", Context.MODE_PRIVATE);
    return aSharedPreferences.getBoolean("State", true);
}

}

recipe.xml

recipe.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/jbsbackground2"
android:orientation="vertical" >

<ImageView
    android:id="@+id/iv_detail"
    android:layout_width="fill_parent"
    android:layout_height="150dp"
    android:scaleType="centerCrop"
    android:src="@drawable/barbecuedporkribs" />

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="10dp"
    android:layout_below="@+id/iv_detail"
    android:background="#3D3C3A" />

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/iv_detail"
            android:layout_marginTop="5dp"
            android:text="Recipe"
            android:layout_toLeftOf="@id/favourites"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tvName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/textView2"
            android:layout_marginTop="2dp"
            android:text="TextView"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="italic" />

        <TextView
            android:id="@+id/tvFavourite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add To Favourites (click star)"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="bold"
            android:layout_above="@+id/tvName"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />


        <ImageButton
            android:id="@+id/favbtn"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/staroff"
            android:background="#00ffffff"
            android:onClick="onClick"
            android:clickable="true"/>

        <TextView
            android:id="@+id/tvTD"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Ingredients"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="bold"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:id="@+id/tvIngredients"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/tvTD"
            android:layout_marginTop="2dp"
            android:text="TextView"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="italic" />

        <TextView
            android:id="@+id/tvK"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/tvIngredients"
            android:layout_marginTop="5dp"
            android:text="Preparation"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tvPreparation"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/tvK"
            android:layout_marginTop="2dp"
            android:text="TextView"
            android:textColor="#000000"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="italic" />
</LinearLayout>
</ScrollView>

推荐答案

在XML中使用ToggleButton:

Use ToggleButton in your XML:

<ToggleButton
    android:layout_width="180dp"
    android:layout_height="180dp"
    android:id="@+id/myToggleButton"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:textOn=""
    android:textOff=""/>

在您的活动中:

ToggleButton toggleButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toggleButton = (ToggleButton) findViewById(R.id.myToggleButton);
    toggleButton.setChecked(false);
    toggleButton.setBackgroundDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.img_star_grey));
    toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked)
                toggleButton.setBackgroundDrawable(ContextCompat.getDrawable(getApplicationContext(),R.drawable.img_star_yellow));
            else
                toggleButton.setBackgroundDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.img_star_grey));
        }
    });
}

这篇关于收藏夹按钮Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆