在android中构建布局时,如果使用ImageView或ImageButton而不添加内容描述,则会收到一条警告,告诉您将内容描述添加到具有的视图中,AppCompatImageView并且AppCompatImageButton该警告不再可用。我认为这是因为的实现AppCompatImageView 具有基于视图内容的默认内容描述,但是回话仍将其读取为“未标记的按钮”,为什么删除了警告?
我这样做是为了MapView类之前,这是非常简单的czuse有像预定义的方法onInterceptTouchEvent或GestureListeners等.
有没有人在地图片段中尝试这种双击或双击缩放功能.我谷歌但仍然无法找到任何解决方案.
我只是通过添加UiSettings来启动它 getMap().getUiSettings().setZoomGesturesEnabled(true);
是否可以通过帮助实现setOnMapClickListener()地图片段的双击事件处理手势?
注意:这个问题纯粹是关于MapFragment并且与已经回答的MapView无关的问题双击:放大Android MapView?
编辑 我在布局中使用的MapFragment:
<ViewFlipper
android:id="@+id/viewFlipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/noItemsText"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:addStatesFromChildren="true"
android:background="@android:color/transparent"
android:gravity="center">
<ListView
android:id="@+id/storesListView"
style="@style/Fill"
android:background="@android:color/transparent"
android:cacheColorHint="#00000000" />
<fragment
android:id="@+id/mapview"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</ViewFlipper>
Run Code Online (Sandbox Code Playgroud)
该类是一个控制器,它正在为Activity扩展Activity而不是AppCompactActivity.
我还在地图中添加了标记聚类.
班级方面:
public class StoreFinderController extends BeeonicsControllerBase implements OnMapReadyCallback,
ClusterManager.OnClusterItemInfoWindowClickListener<AllClusterItems>,ClusterManager.OnClusterClickListener<AllClusterItems> {
Run Code Online (Sandbox Code Playgroud)
onMapReady:
@Override
public void onMapReady(GoogleMap googleMap) {
/*better to work with our map :)*/
this.googleMap = googleMap;
mClusterManager = new CustomClusterManager<AllClusterItems>(getActivity(), getMap());
getMap().setOnCameraIdleListener(mClusterManager);
getMap().setOnInfoWindowClickListener(mClusterManager);
getMap().setOnMarkerClickListener(mClusterManager);
mClusterManager.setOnClusterItemInfoWindowClickListener(this);
mClusterManager.setOnClusterClickListener(this);
/*map additional …Run Code Online (Sandbox Code Playgroud) 在 Android 文档中,它指出:
导航组件专为具有一个主要活动和多个片段目的地的应用程序而设计。主要活动与导航图相关联,并包含负责根据需要交换目的地的 NavHostFragment。在具有多个活动目的地的应用程序中,每个活动都有自己的导航图。
这是否意味着您不能使用导航组件从一个活动导航到另一个活动?情况似乎如此。
第二个问题:如果我创建了一个使用导航抽屉的应用程序,那么在您添加具有导航抽屉的活动时创建的默认代码已经具有用于管理从一个抽屉项目到另一个抽屉项目的导航的代码。那么 Navigation 组件在这里也没什么用吗?
Google 是否希望我们只创建单一活动应用程序?
我使用bottomNavigationView和导航组件。请告诉我在切换到另一个标签并返回到旧标签后如何不破坏片段?例如,我有三个选项卡-A,B,C。我的开始选项卡是A。导航到B之后,然后返回A。当我返回到选项卡A时,我不希望重新创建它。怎么做 谢谢
我在应用程序gradle中有这个:
apply plugin: 'androidx.navigation.safeargs'
implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0'
implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0'
Run Code Online (Sandbox Code Playgroud)
这在项目gradle中:
classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0'
Run Code Online (Sandbox Code Playgroud)
导航图:
<navigation 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:id="@+id/navigation_graph"
app:startDestination="@id/loginPhoneNumberFragment">
<fragment
android:id="@+id/loginPhoneNumberFragment"
android:name="...fragments.LoginPhoneNumberFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_phone_number">
<action
android:id="@+id/action_loginPhoneNumberFragment_to_loginCodeFragment"
app:destination="@id/loginCodeFragment">
<argument
android:name="prefix"
app:argType="string" />
<argument
android:name="phone_number"
app:argType="string" />
</action>
</fragment>
<fragment
android:id="@+id/loginCodeFragment"
android:name="...LoginCodeFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_code" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
登录电话号码片段:
val action = LoginPhoneNumberFragmentDirections.actionLoginPhoneNumberFragmentToLoginCodeFragment(prefix, phoneNumber)
view?.findNavController()?.navigate(action)
Run Code Online (Sandbox Code Playgroud)
登录代码片段:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val prefix = LoginCodeFragmentArgs.fromBundle(arguments).prefix //LoginCodeFragmentArgs is not recognized
}
Run Code Online (Sandbox Code Playgroud)
在 LoginPhoneNumberFragment 中,它创建了“LoginPhoneNumberFragmentDirections”类,但在目标类 LoginCodeFragment 中,它无法识别“LoginCodeFragmentArgs”。
有人可以告诉我我错过了什么吗?(我清理并重建,并尝试使缓存无效...)
运行avd时收到错误消息。
模拟器:queryCoreProfileSupport:找不到交换间隔
我试图使用android黑暗主题。我安装了android studio 3.5预览版。
compileSdkVersion 28目标SdkVersion 28
但仍然出现此错误。这是黑暗主题错误还是我做错了什么?
build.gradle{
dependencies {
// ...
implementation 'com.google.android.material:material:1.1.0-alpha06'
// ...
}}
Run Code Online (Sandbox Code Playgroud)
styles.xml
<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
<item name="android:forceDarkAllowed">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
项目链接
我有一个包含多个皮肤的应用程序。在我定义的一个皮肤中android:colorBackground,然后我想在 XML 布局中将此颜色设置为 ViewGroup 背景颜色。我该怎么做?是否可以?或者它只是系统使用的某些属性?
<style name="SkinDefault" parent="@style/_SkinXYZ">
<item name="android:colorBackground">@color/skin_default_color_background</item>
<item name="colorOnBackground">@color/skin_default_color_on_background</item>
</style>
Run Code Online (Sandbox Code Playgroud) android android-theme android-attributes material-components-android
I followed an instruction to trigger the JavascriptInterface from a webview, but it isnt triggered in my case.
I have an class QuickTextViewer with following:
public class QuickTextViewer {
private WebView webView;
...
...
public QuickTextViewer(){
webView = dialog.findViewById(R.id.mywebview);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
}
@JavascriptInterface
public void resize(final float height) {
System.out.print(height);
}
Run Code Online (Sandbox Code Playgroud)
I also added the following to proguard-rules.pro (actually public only for testing)
-keepclassmembers class fqcn.of.javascript.interface.for.webview { …Run Code Online (Sandbox Code Playgroud) 我有两个片段。SecondFragment和ThirdFragment。实际上,我使用导航组件在片段之间传递值。像这样:
SecondFragment:
val action = SecondFragmentDirections.action_secondFragment_to_thirdFragment().setValue(1)
Navigation.findNavController(it).navigate(action)
Run Code Online (Sandbox Code Playgroud)
这是我从ThirdFragment读取值的方式:
arguments?.let {
val args = ThirdFragmentArgs.fromBundle(it)
thirdTextView.text = args.value.toString()
}
Run Code Online (Sandbox Code Playgroud)
很好 现在我的堆栈看起来像这样:
ThirdFragment
SecondFragment
Run Code Online (Sandbox Code Playgroud)
是否可以通过新的导航组件将值从打开的ThirdFragment传递到先前的SecondFragment?(当ThirdFragment完成时)
我知道onActivityResult,但是如果Nav.Component提供比我想要的更好的解决方案。
谢谢!
android ×10
android-architecture-navigation ×4
java ×2
navigation ×2
javascript ×1
kotlin ×1
material-components-android ×1
webview ×1