QS Talkback bug fixes
Fixes a couple of Talkback bugs in QSCustomizer: * List scrolling * Focusing on correct element when "move" is selected. * No reading "double tap and hold for long press". Also, Dark Mode tile made a switch Fixes: 145259342 Fixes: 145257223 Test: manual using TB Change-Id: I782dad4e1a411972c40e37abc31eabb3fd1f8ea2
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
android:scrollIndicators="top"
|
||||
android:scrollbars="vertical"
|
||||
android:scrollbarStyle="outsideOverlay"
|
||||
android:importantForAccessibility="no" />
|
||||
android:importantForAccessibility="auto" />
|
||||
</com.android.keyguard.AlphaOptimizedLinearLayout>
|
||||
|
||||
<View
|
||||
|
||||
@@ -49,4 +49,9 @@ public class CustomizeTileView extends QSTileView {
|
||||
protected boolean animationsEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLongClickable() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import android.widget.LinearLayout;
|
||||
import android.widget.Toolbar;
|
||||
import android.widget.Toolbar.OnMenuItemClickListener;
|
||||
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -118,7 +119,13 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
|
||||
mTileQueryHelper.setListener(mTileAdapter);
|
||||
mRecyclerView.setAdapter(mTileAdapter);
|
||||
mTileAdapter.getItemTouchHelper().attachToRecyclerView(mRecyclerView);
|
||||
GridLayoutManager layout = new GridLayoutManager(getContext(), 3);
|
||||
GridLayoutManager layout = new GridLayoutManager(getContext(), 3) {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler,
|
||||
RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) {
|
||||
// Do not read row and column every time it changes.
|
||||
}
|
||||
};
|
||||
layout.setSpanSizeLookup(mTileAdapter.getSizeLookup());
|
||||
mRecyclerView.setLayoutManager(layout);
|
||||
mRecyclerView.addItemDecoration(mTileAdapter.getItemDecoration());
|
||||
|
||||
@@ -238,9 +238,21 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
|
||||
return true;
|
||||
}
|
||||
|
||||
private void setSelectableForHeaders(View view) {
|
||||
if (mAccessibilityManager.isTouchExplorationEnabled()) {
|
||||
final boolean selectable = mAccessibilityAction == ACTION_NONE;
|
||||
view.setFocusable(selectable);
|
||||
view.setImportantForAccessibility(selectable
|
||||
? View.IMPORTANT_FOR_ACCESSIBILITY_YES
|
||||
: View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
|
||||
view.setFocusableInTouchMode(selectable);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final Holder holder, int position) {
|
||||
if (holder.getItemViewType() == TYPE_HEADER) {
|
||||
setSelectableForHeaders(holder.itemView);
|
||||
return;
|
||||
}
|
||||
if (holder.getItemViewType() == TYPE_DIVIDER) {
|
||||
@@ -260,6 +272,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
|
||||
}
|
||||
|
||||
((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleText);
|
||||
setSelectableForHeaders(holder.itemView);
|
||||
|
||||
return;
|
||||
}
|
||||
if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) {
|
||||
@@ -306,6 +320,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
|
||||
holder.mTileView.setImportantForAccessibility(selectable
|
||||
? View.IMPORTANT_FOR_ACCESSIBILITY_YES
|
||||
: View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
|
||||
holder.mTileView.setFocusableInTouchMode(selectable);
|
||||
if (selectable) {
|
||||
holder.mTileView.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.content.res.Configuration;
|
||||
import android.provider.Settings;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Switch;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.systemui.R;
|
||||
@@ -112,6 +113,7 @@ public class UiModeNightTile extends QSTileImpl<QSTile.BooleanState> implements
|
||||
state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
|
||||
}
|
||||
state.showRippleEffect = false;
|
||||
state.expandedAccessibilityClassName = Switch.class.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user