6

現在、私は Android TV アプリに取り組んでいます。

Android Lean back サポート ライブラリを使用しました。

1つ追加しましListViewたが、実際のデバイスのリモートでlistViewからアイテムを選択できません。ただし、マウスを使用して、Android 仮想デバイスで listView の項目を選択できます。

リストビューのサンプルコードは次のとおりです。

customViewOrders = new CustomViewOrders(getActivity().getBaseContext(), arrayViewOrders);
lstViewOrder.setAdapter(customViewOrders);

arrayViewOrdersこれは、JSON Web サービスから受信したデータを含む ArrayList です。

これが私のJSONレスポンスです:

{
   "order":[
      {
         "0":"13829CF",
         "gen_id":"13829CF",
         "1":"17534CF",
         "2":"Complete",
         "ord_status":"Complete",
         "3":"Online Preview",
         "sta_name":"Online Preview",
         "4":"2015-10-27 00:00:00",
         "image":"cinereel",
         "placed_from":"web"
      }
   ]
}

AndroidManifest.xml ファイルに次の機能も追加しました。

<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />
<uses-feature
    android:name="android.hardware.faketouch"
    android:required="true" />

だから、私の質問は:リモートの助けを借りて、実際のデバイスで何か(つまり、リスト項目、ボタン)を選択する方法は?

4

1 に答える 1

9

最後に、多くの研究開発の末に解決策を得ました。

Android TVリモコンを使用した方向ナビゲーションの私のソリューションは次のとおりです。

まず、次のように、いずれかのアイテム ( 、 など) にフォーカスを維持する必要がありButtonますTextView

また、nextFocusDownnextFocusLeftnextFocusRight&nextFocusUpプロパティを適用して、テレビのリモート ナビゲーション ボタンをクリックしたときに関連するイベントが発生するようにする必要があります。

<Button
    android:id="@+id/btnSignout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvUserName"
    android:layout_marginTop="2dp"
    android:layout_toLeftOf="@+id/ivUser"
    android:width="100dp"
    android:nextFocusRight="@+id/ivUser" <!-- On click of right arrow button, focus will be move to ivUser id -->
    android:nextFocusUp="@+id/tvUserName" <!-- On click of up arrow button, focus will be move to tvUserName id -->
    android:text="@string/signout"
    android:textAppearance="?android:textAppearanceMedium">

    <requestFocus></requestFocus>

</Button>

詳細については、次を参照してください。

  1. Android ユーザー インターフェース デザイン: コントロール フォーカス順序の基本
  2. TV ナビゲーションの作成.
于 2016-01-13T08:27:46.070 に答える