Java 我需要关于android Toast的帮助,查看错误图标

Java 我需要关于android Toast的帮助,查看错误图标,java,android,drawable,show,toast,Java,Android,Drawable,Show,Toast,“我的活动”是一个视频播放器活动,工作正常。在某些视频上,如果视频不受支持或质量不高,则必须抛出消息(handleHardwareAccelerationError)。 它显示为祝酒词,带有“好”的信息。 现在我想把这个祝酒词改成显示图片或小图标,可以吗?这是我的handleHardwareAccelerationError代码,提前谢谢 private void handleHardwareAccelerationError() { mHardwareAccelerationError

“我的活动”是一个视频播放器活动,工作正常。在某些视频上,如果视频不受支持或质量不高,则必须抛出消息(handleHardwareAccelerationError)。 它显示为祝酒词,带有“好”的信息。 现在我想把这个祝酒词改成显示图片或小图标,可以吗?这是我的handleHardwareAccelerationError代码,提前谢谢

private void handleHardwareAccelerationError() {
    mHardwareAccelerationError = true;
    if (mSwitchingView)
        return;

    Toast.makeText(this, R.string.hardware_acceleration_error, Toast.LENGTH_LONG).show();

}
我试过的是这个,但什么也没表现出来

private void handleHardwareAccelerationError() {
    mHardwareAccelerationError = true;
    if (mSwitchingView)
        return;
            final View popupView = getLayoutInflater().inflate(R.layout.myinforbar, null);
    mError = (ImageView) popupView.findViewById(R.id.errornew);
    mError.setVisibility(View.VISIBLE);



}
这里是myinforbar.xml

<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="21dp" android:layout_marginLeft="0.0dip" android:layout_marginTop="5.0dip"
            android:background="@drawable/button5_background">

            <ImageView
            android:id="@+id/errornew"
                android:src="@drawable/everyone_icon_nearby_cur"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
                android:visibility="invisible"/>
        </LinearLayout>

编辑:

原始活动很长,可以在此处找到,而不是粘贴整个活动,您可以在此处看到它 (私有无效handleHardwareAccelerationError)

新更新


这没有应用消息(onHardwareError),我想在视频播放时弹出的底部小框(信息栏)中看到图标,而不是Toast消息。

Toast受到极大限制,无法显示图标。 编辑:冈哈夫·戴夫说这是可能的,所以值得一试

无论如何,这个免费图书馆:

你可以做你需要的

如果你喜欢坚持谷歌的标准,你可以使用,取而代之的是,据我所知,它不允许放置图标,但无论如何可以与动作/按钮关联,它们是标准的

我不明白你想用popupView做什么,如果你想使用PopupWindow,你必须使用完全不同的语法。当然,我可以帮助你制作一个附加到视图上的弹出窗口,你可以使用弹出窗口,你也可以将它膨胀成一个布局,或者用它作为制作弹出窗口的例子

编辑: 您正在膨胀视图中的布局,但这不会显示视图。相反,您应该使用PopupWindow,并在其内部展开布局。 这是一个取自my BalloodPopup库的示例:

// ....
    hostedView = ((LayoutInflater) ctx.getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(layoutRes, null);
    textView = (TextView) hostedView.findViewById(R.id.text_view);
    textView.setText(text);
// ....
    popupWindow = new PopupWindow(hostedView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
换句话说,你应该能够做一些类似的事情

PopupWindow popupWindow = new popupWindow(mError, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
在代码中显示弹出窗口

这些是代码的要点,然后您可以重新定位弹出窗口,并最终跟踪它进行编辑和重新显示,而不是总是从头开始创建。无论如何,请考虑使用,这是你需要的,而不是疯狂的动画,显示时间,窗口的持久性和定位。你可以将你的布局放大,例如用一个图标和一个文本,使它正好出现在另一个视图的中心,这个视图可以是你的(已经存在的)媒体播放器

更多编辑: 另一个非常简单的解决方案。
要使其简单,请创建一个RelativeLayout,它承载所有视频播放器,然后在其中心创建一个简单的ImageView。将其可见性设置为隐藏时消失,必须显示错误时可见。随后,您可以使用计时器或touchListener将其关闭,使其再次消失。

将使用XML名称或布局名称

<LinearLayout xmlns:androidclass="http://schemas.android.com/apk/res/android" 
android:gravity="center_vertical" 
android:orientation="horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:background="@drawable/button5_background">

<ImageView  
android:id="@+id/errornew"
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:src="@drawable/ic_launcher"/> 

</LinearLayout>       
试试这个

  private void handleHardwareAccelerationError() {
            mHardwareAccelerationError = true;
            if (mSwitchingView)
                return;
                    final View popupView = getLayoutInflater().inflate(R.layout.myinforbar, null);
        PopupWindow pw = new PopupWindow(popupView , 300, 400, true);
        pw.showAtLocation(popupView , Gravity.CENTER, 0, 0);
mError = (ImageView) popupView.findViewById(R.id.errornew);
            mError.setVisibility(View.VISIBLE);
        }

感谢您的回复和帮助,我之所以使用Popupview,是因为它是一个信息栏,显示有关播放媒体的信息,如名称、持续时间、类别等。我想在布局ID R.ID.errornew中将此信息栏中的toast消息显示为图标,而不是toast。我对我的评论进行了一些更新,以回答您的问题。如果你认为它是有用的,请考虑给它一个加,谢谢你的答案Beppi,但因为我是新的Android,我很难理解把你的例子放在我的代码。完整的代码是一个vlc android(VideoPlayerActivity)信息栏显示和所有工作,它只是表明我想成为图标而不是文本的祝酒词,vlc视频播放器活动有一个祝酒词要在HD或4K视频上显示,所以我需要编辑的是(handleHardwareAccelerationError)我是否需要创建新的布局,即使它们已经开始工作了?您可以发布一个与我的布局xml匹配的完整示例,或者查看原始Vlc android hereorg.videolan.Vlc.gui.VideoPlayerActivity。在这一节中,它说私有void handlehardware eaccelerationError我真的不知道,我不知道你在说什么源代码,也不知道你想实现4个解决方案中的哪一个。嗨,我应该在哪里添加这些代码,我的意思是我在这里没有看到任何布局ID?对不起,这里没有,请详细解释。谢谢,R.layout.mytoast?这是什么地方?创建一个名为“mytoast”的xml,并使用回答中提到的xml代码是的,但我已经有一个名为my infobar的布局,我想在布局id上显示一个名为android:id=“@+id/errornew”的图标。很抱歉,这里没有任何内容,因此我遇到了许多错误,并且无法解决,亲爱的非常感谢你的帮助,但是你能看看我编辑的xml并告诉我到底要在这里放什么吗。谢谢,我编辑了我的答案。请查收。如果正确,请向上投票亲爱的,我试过了,但它看起来几乎和我的一样,所以没有显示任何东西。我添加了xml文件以供参考。Thankspw.showAtLocation(弹出视图,重心,0,0);在您的代码中,您没有显示弹出窗口是的,您右键pw.showAtLocation(popupView,Gravity.CENTER,0,0);在我的原始代码中没有,但对我来说仍然不起作用,有什么建议吗?在我的情况下,它很好用。不要直接调用onCreate()方法内部使用setContentView(一些布局),然后使用这部分代码,它会很好用。通过粘贴此代码,我没有得到任何错误,但是它没有显示我想要的错误图标,而且这个代码必须在Vlc视频播放器内使用。活动在私有的void HandleHardware上。每个加速错误没有其他任何错误。根据原始Vlc android,所以我无法更改使用位置。我只想编辑原始活动,从showToast到ShowICAN,请查看vlc android githubTry中的完整活动,它通过动画看起来很棒。
  private void handleHardwareAccelerationError() {
            mHardwareAccelerationError = true;
            if (mSwitchingView)
                return;
                    final View popupView = getLayoutInflater().inflate(R.layout.myinforbar, null);
        PopupWindow pw = new PopupWindow(popupView , 300, 400, true);
        pw.showAtLocation(popupView , Gravity.CENTER, 0, 0);
mError = (ImageView) popupView.findViewById(R.id.errornew);
            mError.setVisibility(View.VISIBLE);
        }