Как проверить, есть ли у TextView изображение в Android - PullRequest
0 голосов
/ 04 июня 2018

У меня есть макет с несколькими TextView's .Когда пользователь нажимает один, я проверяю, есть ли у TextView фон.Если у него есть фон, я удаляю его, а если нет, я его устанавливаю.

Вот пример моего кода:

<?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>

Так что мой вопрос, как мне это сделать?проверить, если TextView уже имеет заданный фон?

Обновить

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);

                 }

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Это можно сделать с помощью следующего кода:

Java:

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;
    }
}
0 голосов
/ 04 июня 2018

Это точно удовлетворит ваше требование -

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);
        }
    }
});
0 голосов
/ 04 июня 2018

Вы можете получить Background-Drawable, используя

myTextView.getBackground();

Если он равен нулю, фон не устанавливается, в противном случае он установлен.Тогда вы можете сделать что-то вроде этого:

if(myTextView.getBackground() == null)
    myTextView.setBackground(myDrawable)
else
    myTextView.setBackground(null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...