Проблемы с изменением изображения и текста в кнопке - PullRequest
0 голосов
/ 30 октября 2018

Я работаю над проблемой, которая поставила меня в тупик. Я пытаюсь настроить кнопку воспроизведения, при нажатии которой изображение «воспроизведения» меняется на изображение «паузы» и обратно, а также изменяется текст метки с «воспроизведения» на «пауза», а затем снова возвращается. Я не могу понять код правильно, и мне было интересно, если у вас есть какие-либо предложения? Вот мой код:

Это файл activity_read.xml. Я пытался превратить идентификатор кнопки в "play_pause"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.yhussein.myapplication.ReadActivity"
    android:background="#fcfcfc">

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"
        android:padding="10dp">

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

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="@dimen/card_image_height"
                android:background="#2d2d2d"
                android:id="@+id/book_img_id"
                android:scaleType="centerCrop"
                android:contentDescription="@string/todo" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="horizontal">

                <Button
                    android:id="@+id/play_pause"
                    style="?android:attr/borderlessButtonStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawableTop="@drawable/ic_play_arrow_black_24dp"
                    android:text="@string/play"
                    android:textColor="?attr/colorPrimary" />

                <Button
                    android:id="@+id/lang"
                    style="?android:attr/borderlessButtonStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawableTop="@drawable/ic_language_black_24dp"
                    android:text="@string/lang"
                    android:textColor="?attr/colorPrimary" />

                <Button
                    android:id="@+id/close"
                    style="?android:attr/borderlessButtonStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawableTop="@drawable/ic_close_black_24dp"
                    android:text="@string/close"
                    android:textColor="?attr/colorPrimary" />
            </LinearLayout>

            <TextView
                android:id="@+id/txtDesc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="@string/book_title"
                android:textSize="18sp"
                android:textStyle="bold"
                tools:text="Book Title" />

        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</LinearLayout>

Затем я попытался настроить "play_pause setOnClickListener" в ReadActivity. Код, который я пытался настроить, выделен жирным шрифтом [надеюсь]:

 play_pause.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    play_pause.setVisibility(View.GONE);
                    lang.setVisibility(View.GONE);
                    close.setVisibility(View.GONE);
                    bookmark++;
                    if (bookmark > st.size() - 1) {
                        bookmark = st.size() - 1;
                    }
                    section++;
                    if (section > st.size() - 1) {
                        section = st.size() - 1;
                    }
                    img.setImageResource(pixId);
                   /* tvdescription.setText(st.get(bookmark));*/
                    final MediaPlayer mp = MediaPlayer.create(getApplicationContext(), soundId);
                    mp.start();

                    **//Pauses media player when the button is clicked ; changes the drawable and the label text
                    if(mp.isPlaying()){
                        mp.pause();
                        play_pause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
                        play_pause.setText(R.string.Pause);

                    } else {
                        mp.start();
                        play_pause.setBackgroundResource(R.drawable.ic_play_arrow_black_24dp);
                        play_pause.setText(R.string.Play);
                    }**

                    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                        public void onCompletion(MediaPlayer mp) {
                            finish(); // finish current activity
                            Toast.makeText(getApplicationContext(), "End of sound!", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });

Когда программа запускается, вот что происходит, когда я нажимаю кнопку «Play»: введите описание изображения здесь

Кто-нибудь знает, что я делаю неправильно?

...