【问题标题】:Changing colour of Toggle Button when clicked and store its clicked state单击时更改切换按钮的颜色并存储其单击状态
【发布时间】:2018-02-04 07:20:43
【问题描述】:

在我的应用程序中从 moviesdb 读取。我可以将其中任何一个添加为收藏夹,也可以取消收藏它们。这是我的问题。我希望按钮在单击时改变颜色并保持这种状态,直到我稍后回来并且不喜欢这部电影。这是我要更改的代码部分。基本上我说如果isCheckedtrue,我说嘿把这部电影添加到数据库中作为收藏夹。如果我再次点击它,我会删除它。

b.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        if(isChecked) {

            ContentValues contentValues = new ContentValues();
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_ID, mMovieId);
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_POSTER_PATH, mImage);
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_TITLE, mTitle);
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_OVERVIEW, mOverview);
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_RELEASE_DATE, mDate);
            contentValues.put(FavouriteContract.FavouriteEntry.COLUMN_MOVIE_VOTE_AVERAGE, mRating);

            uri = getActivity().getContentResolver().insert(FavouriteContract.FavouriteEntry.CONTENT_URI, contentValues);

            Toast.makeText(getActivity(),"Movie:  " + mTitle + " was added", Toast.LENGTH_SHORT).show();


        }else{

            Uri deleteUri = FavouriteContract.FavouriteEntry.buildMovieUriWithId(mMovieId);

            getActivity().getContentResolver().delete(
                          deleteUri,
                          null,
                          null);

            Toast.makeText(getActivity(),"Movie deleted from favourites ", Toast.LENGTH_SHORT).show();

        }

    }

});

有什么想法吗?

谢谢,

西奥。

更新

我尝试了之前的努力,几乎解决了它

我创建了一个可绘制的 xml 文件,

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/ic_star_black"/>
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/ic_star_black" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/ic_star_black"/>
<item android:drawable="@drawable/ic_star_border" />

然后我将它导入到我的 ToggleButton 中。

<ToggleButton

            android:id="@+id/add_favourite"
            android:layout_width="46dp"
            android:layout_height="46dp"
            android:layout_gravity="right"
            android:layout_marginRight="45dp"
            android:background="@drawable/button_background_selector"
            android:textSize="20sp"
            android:backgroundTint="@color/colorPrimaryDark"
             />

【问题讨论】:

    标签: android button click


    【解决方案1】:

    要更改切换按钮的颜色,您可以使用自定义背景。创建一个可绘制对象。

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="false" android:drawable="@color/red"  />
        <item android:state_checked="true" android:drawable="@color/green"  />
    </selector>
    

    现在把它放在你的切换开关上。

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New ToggleButton"
        android:id="@+id/toggleButton"
        android:background="@drawable/bg_toggle"/>
    

    现在要保持切换状态,您可以使用 SharedPreference。

    【讨论】:

    • 事情就是这样。我已经拥有用作 ToggleButton 的星星背景。
    【解决方案2】:

    要使ToggleButton 用作开关星,您必须这样:

    <ToggleButton
            android:id="@+id/starButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/some_background_you_want"
            android:button="@drawable/star_selector" <!--place your star selector here-->
            android:textOff="@null" <!--Get rid of the text-->
            android:textOn="@null"  <!--Get rid of the text--> />
    

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2021-07-07
      相关资源
      最近更新 更多