Mam układ z wielokrotnością Textview's. Gdy użytkownik kliknie jeden, sprawdź, czy TextView ma tło. Jeśli ma to tło, usuwam, w przeciwnym razie, jeśli go nie ustawiam.

Oto przykład mojego kodu:

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

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textAppearance="@android:style/TextAppearance.Medium"/>
</RelativeLayout>

Więc moje pytanie brzmi: jak sprawdzić, czy TextView ma już zestaw tła?

Aktualizacja

if( textView.getBackground() == null) {
                    Log.i("here", "null");
                    textView.setBackgroundResource(R.drawable.draw_cross);

                 }

                 if(textView.getBackground() != null) {
                     Log.i("here", "not null");

                     textView.setBackground(null);

                 }
0
Gulshan 4 czerwiec 2018, 12:10

3 odpowiedzi

Najlepsza odpowiedź

Możesz to osiągnąć za pomocą następującego kodu:

Jawa:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        TextView textView = findViewById(R.id.text_view);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (hasBackground(v)) {
                    v.setBackground(null);
                } else {
                    v.setBackgroundResource(R.drawable.draw_cross);
                }
            }
        });
    }

    private boolean hasBackground(View v) {
        return v.getBackground() != null;
    }
}
1
Anthony Cannon 4 czerwiec 2018, 09:59

Możesz uzyskać szufladę z użyciem

myTextView.getBackground();

Jeśli jest null, żadne tło nie jest ustawione, w przeciwnym razie jest to. Wtedy możesz zrobić coś takiego:

if(myTextView.getBackground() == null)
    myTextView.setBackground(myDrawable)
else
    myTextView.setBackground(null)
1
glm9637 4 czerwiec 2018, 09:31

To na pewno spełnia Twoje wymagania -

TextView tv = findViewById(R.id.text_view);
int count = 1;

tv.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View view)
    {
        if(tv.getBackground() == null)
        {
            tv.setBackgroundResource(R.drawable.draw_cross);
            count = count+2;
        }
        else if(count%2 != 0)
        {
            tv.setBackgroundResource(0);
        }
    }
});
1
Raj 4 czerwiec 2018, 09:58