当前位置: 首页 > 知识库问答 >
问题:

Android-自定义吐司触摸外部活动

齐望
2023-03-14

我正在尝试使用自定义toastImageViewTextView。当我触摸任何地方(点击按钮,触摸布局……)时,我希望我的吐司消失,但它没有。

我读取了Toast.class文件,并尝试在调用新Toast之前使用cancel()方法,但这并没有解决任何问题。有人能给我一个解决办法吗?

LayoutInflater inflater = (LayoutInflater) context.getSystemService(
        Context.LAYOUT_INFLATER_SERVICE);
View v = new View(context);
v = inflater.inflate(R.layout.custom_toast, (ViewGroup) v.findViewById(
        R.id.layout_custom_toast));

layout = (RelativeLayout) v.findViewById(R.id.layout_custom_toast);
tvToast = (TextView) v.findViewById(R.id.tv_custom_toast);
tvToast.setText(text);

ivToast = (ImageView) v.findViewById(R.id.iv_custom_toast);
layout.setBackgroundResource(R.drawable.border_style_red);
ivToast.setBackgroundResource(R.drawable.warning);

Toast toast = new Toast(context);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(v);
toast.show();

共有1个答案

都建树
2023-03-14

解决方案:我使用Toast.maketext(...)而不是new Toast(..),因为它会膨胀隐藏api(com.android.internal.r)中的资源,并且您无法访问它。使用toast.maketext(...)初始化toast对象可以简单地访问隐藏的api。

Toast toast = Toast.makeText(context, text, duration);

layout = (LinearLayout) toast.getView();
layout.removeAllViews();
layout.setOrientation(LinearLayout.HORIZONTAL);

int dftPadding = (int) StaticValues.dpToPixel(context, 10);
layout.setPadding(dftPadding, dftPadding, dftPadding, dftPadding);
ivToast = new ImageView(context);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, (int) StaticValues.dpToPixel(context, 5), 0);
ivToast.setLayoutParams(params);
layout.setBackgroundResource(R.drawable.border_style_red);
ivToast.setBackgroundResource(R.drawable.warning);
layout.addView(ivToast);
tvToast = new TextView(context);
tvToast.setTextColor(Color.BLACK);
tvToast.setTypeface(null, Typeface.BOLD);
tvToast.setText(text);
layout.addView(tvToast);
toast.show();
 类似资料:
  • 在mainactivity中使用MyToast: 我收到这个警告: 避免将null作为视图根传递(需要解析膨胀布局的根元素上的布局参数) 未为MyToast类型定义findViewById(int)方法

  • 问题内容: 我有一个使用Theme.Dialog样式的活动,因此它是另一个活动上方的浮动窗口。但是,当我在对话框窗口外部(在后台活动上)单击时,对话框关闭。如何停止这种行为? 问题答案: 这可以为您提供帮助。这是处理外部触摸事件的一种方式: 在窗口外触摸时如何取消以活动为主题的对话框? 只是想指出,有是一种方式来获得对话框般从主题作为一个对话的活动“触摸外面取消”的行为,虽然我还没有完全调查它是否

  • 我有一个活动是使用这个主题的。对话框样式,使其成为另一活动上的浮动窗口。但是,当我在对话框窗口外(在后台活动上)单击时,对话框关闭。我怎样才能阻止这种行为?

  • 我有这个祝酒词要出现,一切都很好,除了音频。我试图将toast.mp3放在不同的位置,如项目主文件夹、资产等,甚至使用了d:/myprojectpath/Assets/toast.mp3这样的路径,但通知仍然是静默的。我是个初学者,所以也许我错过了什么...当然,我也在寻找解决方案,但没有任何帮助。下面是我的代码:

  • 我在Play商店中看到某些应用程序不像正常活动那样全屏。他们占据了一部分屏幕。我试图寻找解决方案,但由于我是新手,我不知道用于此类活动的确切单词。我如何创建此类活动?问候

  • 问题内容: 我有一个运行远程服务然后退出的android活动。该服务本身在设备节点上进行轮询并检查更改,我想使用Toast来提醒用户,但是我没有让它起作用。Toast没有显示,过一会儿,Android喊我的应用程序没有响应。顺便说一句,我不想​​再次开始活动并从那里显示吐司,我只是希望它在显示给用户的当前屏幕上弹出。 服务代码如下: 问题答案: 您无法通过服务呼叫Toast消息。除了UI线程之外,