Expose selector draw condition for test

There is no other way for a test to inspect whether the
selector drawable will be drawn or not. This adds a hidden
test api to expose it

Bug: 67881712
Test: AbsListViewTest#testSelectorOnScreen
Change-Id: I3b6d25a0c8cb0c5f6c8bfc45eaa2660caa133b7d
This commit is contained in:
Evan Rosky
2018-01-22 09:36:41 -08:00
parent 52aa9801fe
commit 8e5bd81c56
2 changed files with 14 additions and 1 deletions

View File

@@ -1037,6 +1037,10 @@ package android.view.autofill {
package android.widget {
public abstract class AbsListView extends android.widget.AdapterView implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
method public final boolean shouldDrawSelector();
}
public class CalendarView extends android.widget.FrameLayout {
method public boolean getBoundsForDate(long, android.graphics.Rect);
}

View File

@@ -19,6 +19,7 @@ package android.widget;
import android.annotation.ColorInt;
import android.annotation.DrawableRes;
import android.annotation.NonNull;
import android.annotation.TestApi;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@@ -2744,13 +2745,21 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
private void drawSelector(Canvas canvas) {
if (!mSelectorRect.isEmpty()) {
if (shouldDrawSelector()) {
final Drawable selector = mSelector;
selector.setBounds(mSelectorRect);
selector.draw(canvas);
}
}
/**
* @hide
*/
@TestApi
public final boolean shouldDrawSelector() {
return !mSelectorRect.isEmpty();
}
/**
* Controls whether the selection highlight drawable should be drawn on top of the item or
* behind it.