question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Android TV] Touchable navigation not working with D-Pad in RN 57

See original GitHub issue

Environment

  React Native Environment Info:
    System:
      OS: Linux 4.15 Ubuntu 18.04.1 LTS (Bionic Beaver)
      CPU: x64 Intel(R) Core(TM) i7 CPU         950  @ 3.07GHz
      Memory: 782.58 MB / 11.72 GB
      Shell: 5.4.2 - /usr/bin/zsh
    Binaries:
      Node: 10.10.0 - ~/.nvm/versions/node/v10.10.0/bin/node
      Yarn: 1.9.4 - ~/.nvm/versions/node/v10.10.0/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.10.0/bin/npm
    SDKs:
      Android SDK:
        Build Tools: 23.0.1, 26.0.3, 27.0.3, 28.0.2
        API Levels: 23, 26, 27, 28
    npmPackages:
      react: 16.5.0 => 16.5.0 
      react-native: 0.57.0 => 0.57.0 
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

Description

This is a regression.

D-Pad on Android TV does not navigate between touchables anymore.

Previously, with some touchables on screen pressing the a D-Pad would select them in a natural way. However in RN 0.57.0 nothing happens.

The touchables can still be clicked with a mouse and behave as expected (ie make a sound, and opacity changes), so its potentially a D-Pad event issue.

There may be some kind of invisible popup or something as pressing down and up still make sounds. Ie start the example, and press down on the dpad twice. You will hear a selection sound. Pressing down again will not do anything until you press UP (indicating 3 cycling between 3 options).

Reproducible Demo

import React, {Component} from 'react';
import {View, TouchableOpacity} from 'react-native';

const style = {
  backgroundColor: 'grey',
  width: 200,
  height: 200,
};

export default class App extends Component {
  render() {
    return (
      <View>
        <TouchableOpacity { ... { style } } />
        <TouchableOpacity { ... { style } } />
        <TouchableOpacity { ... { style } } />
      </View>
    );
  }
}

^ the above has been tested on 0.55 is is working fine, but is broken on 0.57

If you want a project example you can checkout this and run it: https://github.com/Weetbix/reddit-tv/tree/upgrade-to-react-native-57-WIP

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:9 (3 by maintainers)

github_iconTop GitHub Comments

2reactions
Justimianocommented, Sep 28, 2018

I built a small android tv demo app and on both real TV device and android emulator I am having D-pad navigation issue.

Select key - is working fine and was able to confirm that event associated with onPress was happening. Up, Down, Left, Key - are not working. I was expecting to see the element being highlighted when navigating through them; I used the component such as TouchableOpacity, TouchableHighlight, TouchableWithoutFeedback and none of them change the styles when using D-pad to navigate through them.

Because of this issue, I couldn’t navigate through the app because there is no way for me to see which element the focus is on.

I very much appreciate if this issue can get addressed as well.

React Native Environment Info: System: OS: Windows 10 CPU: x64 Intel® Core™ i7-7820HQ CPU @ 2.90GHz Memory: 4.01 GB / 15.82 GB Binaries: Yarn: 1.7.0 - C:\Users\Justimiano.Alves\AppData\Roaming\npm\yarn.CMD npm: 4.6.1 - C:\Program Files\nodejs\npm.CMD IDEs: Android Studio: Version 3.1.0.0 AI-173.4907809

Thanks!

2reactions
gtebbuttcommented, Sep 25, 2018

Understood - I was hoping that the same work might be able to fix both, but sounds like that was optimistic of me!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Dpad navigation not working on tv for the recyclerview which ...
what I want is to use Dpad controls to navigate recyclerview which I am not able to do. Any help is greatly appreciated....
Read more >
TV Navigation | Android Developers
The primary navigation method on TV is through the directional pad (called a D-pad). This pad limits movement to up, down, left, ...
Read more >
Tutorial: Add Touch to Android-based Fire TV apps - Clear
This is to ensure D-Pad clicks and touch clicks both execute the desired operation. While on a D-Pad style navigation the size of...
Read more >
React Native on Android TV - SlideShare
Think Different! ... Smartphone without touch • Everything is focus oriented • Use background images ... React Native & Android TV • Supported...
Read more >
Building For TV Devices - React Native
Access to touchable controls: When running on Android TV the Android framework will automatically apply a directional navigation scheme ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found