我正在使用原生Android应用程序来实现最新的GoogleMap API(V2),我需要尽可能多地进行可访问性投诉。
我可以将contentDescription属性添加到mapView,它可以正常工作 - TalkBack可以识别它。
但是,当我将相同的属性添加到Marker或InfoWindow的布局时,TalkBack会忽略它。
似乎GoogleMap只是在内部将膨胀的布局呈现为位图,并在mapview的顶部显示此位图,忽略contentDescription属性。因此,当点击相应的图像时,TalkBack不会说任何内容。
任何人都有不同的经验或知识如何使用最新的Googlemap向InfoWindow或Marker添加contentDescription?
感谢。
答案 0 :(得分:1)
对于标记,我使用marker.setTitile()
并且它有效,但仍然不知道如何使InfoWindow工作。
答案 1 :(得分:0)
您的意思是设计一个新的信息窗口吗?您应首先编写.xml布局文件,然后:
map.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker arg0) {
String namepic = arg0.getTitle();
// Getting view from the layout file info_window_layout
View v = getLayoutInflater()
.inflate(R.layout.info_window, null);
LatLng latLng = arg0.getPosition();
// Getting the position from the marker
TextView tvtitle = (TextView) v.findViewById(R.id.tv_title);
TextView tvLat = (TextView) v.findViewById(R.id.tv_lat);
TextView tvLng = (TextView) v.findViewById(R.id.tv_lng);
ImageView myimage = (ImageView) v.findViewById(R.id.my_image);
tvtitle.setText(arg0.getTitle());
tvLat.setText("Latitude:" + latLng.latitude);
tvLng.setText("Longitude:" + latLng.longitude);
// Returning the view containing InfoWindow contents
myimage.setImageResource(getResources().getIdentifier(namepic,
"drawable", getPackageName()));
return v;
}
});
答案 2 :(得分:0)
我们在一个旧项目中所做的是在收到标记点击回调时以编程方式构建和公布内容描述。
您可以检查AccessibilityManager,AccessibilityRecordCompat和AccessibilityEvent。
但目前SDK中没有用于信息标记的焦点导航(导航左右或左右导航)支持。盲人使用焦点导航非常普遍。
问候。