Отправляет email-рассылки с помощью сервиса Sendsay

[prg] Как добавить виртуальные view к view и изменить виртуальную структуру одного view,при клике на другое view.

Всех приветствую. Ранее я уже задавал этот вопрос здесь,хоть и нашёл
другое решение,но я решил переделать работу со ссылками,поскольку
имеющийся у меня вариант замедляет работу со ссылками из-за того,что в
данный момент чтобы на них кликать,нужно делать угловой жест
talkback,добираться до пункта ссылки,а потом кликать на них,но ведь
можно просто добавить эти ссылки как виртуальные view. К тому же я
попытался сам реализовать добавление хотя бы одного виртуального узла,но
у меня ничего не вышло. Мне нужно создать виртуальную структуру view для
ссылок,т.е чтобы зрячие люди вообще не видели эти view. Лучше всего,на
мой взгляд,сделать это с использованием accessibilitynodeinfo,но я не
особо нашёл примеров,как это сделать. Для примера сойдёт такой вариант:
У меня есть два view. В одном view есть какой-нибудь текст,к примеру
Мама мыла раму. При клике по второму view должны появляться виртуальные
view с отдельными словами,т.е в данном случае 3 view с текстами
мама,мыла и раму. Если мы ещё раз кликнем по этому view,оно должно
исчезнуть. При клике по одному из виртуальных view это view должно
исчезать. Вообще по моей задумке при клике по одному из элементов
listview текст у textview должен меняться,вместе с ним должно меняться
количество виртуальных view. Как раз этот пример о котором я писал
вначале,поможет мне понять,как это сделать. Повторяю,что мне нужна
именно виртуальная структура view и очень хотелось бы,если это конечно
возможно,чтобы это работало на android 4.4 (api 19),хотя это не очень
важное условие. Главное для меня,чтобы создавалась виртуальная
структура,т.е структура с использованием accessibilitynodeinfo. Как я
уже писал,я попытался сам добавить одно виртуальное view для проверки,но
у меня ничего не вышло. Может это issue,которое я должен отправить в
google? Если это так,подскажите пожалуйста,куда нужно отправлять
информацию об этом баге в android sdk. Ниже будет код тестового
приложения,чтобы показать,как я это делаю. Заранее всем огромное спасибо
за помощь.

manifest:

<?xml version="1.0" encoding="utf-8"?> <manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.alexandrkozlovskiy.test">

<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:label="test"
android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView android:layout_width="match_parent"
android:layout_height="match_parent" android:contentDescription="Hello
World!" android:id="@+id/tv"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java:
package ru.alexandrkozlovskiy.test;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.TextView;

public class MainActivityextends AppCompatActivity {
public TextViewtv;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
tv.setAccessibilityDelegate(new View.AccessibilityDelegate() {
@Override public void onInitializeAccessibilityNodeInfo(View host,
AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
TextView v=new TextView(MainActivity.this);
v.setText("test of virtual views");
v.setLayoutParams(new
ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
v.setVisibility(View.VISIBLE);
info.addChild(v,1);
}
});
}
}

Ответить   Fri, 26 Jun 2020 01:08:02 +0300 (#3653999)