Java 设置图像时操作栏标题消失

Java 设置图像时操作栏标题消失,java,android,android-actionbar,android-imageview,Java,Android,Android Actionbar,Android Imageview,我正在尝试将图像设置到动作栏中,我正在使用CircularImagView来实现这一点 (ScaleType.FIT_END不适用于CircularImageView,但我也尝试过ImageView,即使应用了ScaleType.FIT_END,也会得到相同的结果) 它适用于大屏幕手机,但标题消失在较宽的手机上 例如,对于像nexas 5x这样的宽幅手机,标题显示效果很好 但不会出现在像我的物理手机这样的狭窄设备上 下面是我用来设置图像的代码 try {

我正在尝试将图像设置到动作栏中,我正在使用CircularImagView来实现这一点

(ScaleType.FIT_END不适用于CircularImageView,但我也尝试过ImageView,即使应用了ScaleType.FIT_END,也会得到相同的结果)

它适用于大屏幕手机,但标题消失在较宽的手机上

例如,对于像nexas 5x这样的宽幅手机,标题显示效果很好

但不会出现在像我的物理手机这样的狭窄设备上

下面是我用来设置图像的代码

             try {
                // setting the image in the actionbar
                getSupportActionBar().setDisplayOptions(getSupportActionBar().getDisplayOptions()
                        | ActionBar.DISPLAY_SHOW_CUSTOM);
                CircleImageView imageView = new CircleImageView(getSupportActionBar().getThemedContext());
                //imageView.setScaleType(CircleImageView.ScaleType.FIT_END);
                //imageView.setForegroundGravity(Gravity.RIGHT);
                imageView.setImageBitmap(bitmap);
                getSupportActionBar().setCustomView(imageView);
                // setting the image in actionbar ends here
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
即使ScaleType.FIT\u END或Gravity.RIGHT也没有帮助

(ScaleType.FIT_END不适用于CircularImageView,但我也尝试过ImageView,即使应用了ScaleType.FIT_END,也会得到相同的结果)

位图是全局变量,我正在onCreate中设置它,为了使事情不那么复杂,我没有包括它


解决这个问题的办法是什么?

根据Manohar Reddy的建议 我已经创建了一个LinearLayout来创建一个LayoutParam,在上面设置了宽度和高度,并将该layout param设置为imageview,从而解决了这个问题

    try {
                    // setting the image in the actionbar
                    getSupportActionBar().setDisplayOptions(getSupportActionBar().getDisplayOptions()
                            | ActionBar.DISPLAY_SHOW_CUSTOM);
                    CircleImageView imageView = new CircleImageView(getSupportActionBar().getThemedContext());

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(70, 70);
                    imageView.setLayoutParams(layoutParams);
                    imageView.setImageBitmap(bitmap);
                    getSupportActionBar().setCustomView(imageView);
                    // setting the image in actionbar ends here
     } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
                }

必须创建新的布局参数,因为活动xml中没有imageview,因此无法获取参数。希望这对某人有所帮助。

根据Manohar Reddy的建议 我已经创建了一个LinearLayout来创建一个LayoutParam,在上面设置了宽度和高度,并将该layout param设置为imageview,从而解决了这个问题

    try {
                    // setting the image in the actionbar
                    getSupportActionBar().setDisplayOptions(getSupportActionBar().getDisplayOptions()
                            | ActionBar.DISPLAY_SHOW_CUSTOM);
                    CircleImageView imageView = new CircleImageView(getSupportActionBar().getThemedContext());

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(70, 70);
                    imageView.setLayoutParams(layoutParams);
                    imageView.setImageBitmap(bitmap);
                    getSupportActionBar().setCustomView(imageView);
                    // setting the image in actionbar ends here
     } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
                }

必须创建新的布局参数,因为活动xml中没有imageview,因此无法获取参数。希望这对其他人有所帮助。

尝试拍摄低分辨率图像,并固定圆形图像视图的宽度和高度。请不要仅仅因为使用了android studio标记就用它来标记问题:android studio标记只应在您对IDE本身有疑问时使用,而不是在其中编写(或想要编写)任何代码时使用。另外,请不要滥用粗体格式明白了,谢谢你提供的infoManohar Reddy,我按照你的建议添加了这个LinearLayout.LayoutParams LayoutParams=新的LinearLayout.LayoutParams(70,70);setLayoutParams(layoutParams);尝试拍摄低分辨率图像,并固定圆形图像视图的宽度和高度。请不要仅仅因为使用了android studio标记就用它来标记问题:android studio标记只应在您对IDE本身有疑问时使用,而不应在其中编写(或想要编写)任何代码。另外,请不要滥用粗体格式明白了,谢谢你提供的infoManohar Reddy,我按照你的建议添加了这个LinearLayout.LayoutParams LayoutParams=新的LinearLayout.LayoutParams(70,70);setLayoutParams(layoutParams);