2

私は既存の Android アプリをアクセス可能にする作業を行っていますが、非常にイライラします。機能するはずの多くの機能が機能しません。

Google Codelabsの例 で説明されているように、説明のためにコンテンツをグループ化しようとしていますが、それでもコンテンツの一部がジェスチャー ナビゲーション用にフォーカス可能になります。

私はルート ビュー three として垂直方向Fragmentの aを持っており、それぞれに anと aが含まれています。LinearLayoutRelativeLayoutsImageViewTextView

レイアウト

Codelab と同様に、RelativeLayoutをフォーカス可能に設定しました。これらは純粋に装飾的なものであるためImageViews、 を null に設定しました。ContentDescription

これは、ルートを持つXMLこれらの 1 つのレイアウトです。RelativeLayoutsLinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical"
    tools:context="com.my.fancyapp.fragments.OtherFragment">

    <RelativeLayout
        android:id="@+id/item_youtube"
        android:layout_width="match_parent"
        android:layout_height="@dimen/other_item_height"
        android:focusable="true"
        android:background="?attr/selectableItemBackground"
        android:padding="@dimen/other_item_padding">

        <ImageView
            android:id="@+id/ivYouTube"
            android:layout_width="@dimen/other_icon_width"
            android:contentDescription="@null"
            android:layout_height="match_parent"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/other_text_margin_left"
            android:text="YouTube"
            android:textAppearance="@style/ArtistTextAppearance" />
    </RelativeLayout>
    ...
</LinearLayout>

では、パースペクティブ ビュー (Youtube チャンネル、Facebook ページ、またはインプレッサムを含む Web ビュー) にリンクするfor eachFragmentを設定し、 withを読み込みます。onClickListenerRelativeLayoutImageViewPicasso

itemYoutube.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(youTubeUrl));
            startActivity(intent);
            }
        }
    });

Picasso.with(getActivity())
        .load(R.drawable.icon_youtube)
        .fit()
        .centerInside()
        .into(iconYoutube);

itemYoutube.setContentDescription(getString(R.string.youtube));

問題は、アイテムをクリックしてからスワイプして次のアイテムに移動しようとすると、次のアイテムに移動するのではなく、テキストが強調表示されることです。RelativeLayout

ここに画像の説明を入力

TextViewフォーカスが次ではなくにジャンプする理由は誰にもわかりますRelativeLayoutか?

私は次のことを試しました:

  • RelativeLayoutsXMLの ContentDescription を設定します
  • の ContentDescriptionTextViewsを null に設定します (おそらく適切ではありません)。
  • コンテンツの説明を設定する順序を変更しました
  • TextViewsfocusable:false に設定します
  • の ContentDescription を削除したためRelativeLayouts、 のみに移動し、必要にTextViews応じて全体が強調表示さRelativeLayoutれませんでした

Codelabs の例とは対照的に、ImageView内部にあるのにすべてを読み取る必要RelativeLayoutがあるのは問題でしょうか? TextViewsまたは、xml によっていくつかの値を設定しClickListener、コードによって動的に設定する場合に問題がありますか? 私はまったく無知です。

4

2 に答える 2