左右TextView旋转门问题

最近由于旋转门问题的一个客户找我,当在字符25更多的时候是不是走了,后来,我在重现的问题,发现问题如下面:

问题1.人物25几个月之内可以去。

问题2.在人物25个月,虽然比屏幕宽度,不去

问题3.屏幕宽度能够走的。

查看各种资料。发现例如以下原因导致。但无法解释问题1.

显示跑马灯效果的前提条件就是你的文本内容要比显示文本的外部组件长,即外部组件无法完整的显示内部的文本内容。

因此要实现跑马灯效果有两种设置方式:

1、layout_width=”"设置为成比文本内容短的固定值。最好不要写成wrap_content或者fill_parent。

2、假设layout_width=”"设置wrap_content或者fill_parent,那么能够添加上 android:paddingLeft="15dip",android:paddingRight="15dip"使两端的距离加大而无法所有显示文本内容。可是这有一个缺陷就是在手机的屏幕变大时。距离没有变大,外部组件又能够正常显示内部文本。于是又无法显示跑马灯效果,因此建议第一种设置为佳。


修正代码例如以下:

if(wm !=null && mMainPanel != null){
     try {
      wm.removeView(mMainPanel);
      wm = null;
      mMainPanel = null;
     } catch (Exception e) {
      e.printStackTrace();
     }
    }
    wm = (WindowManager)context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    //设置窗体布局居于全部之上
                params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
                //使窗体失去焦点
                params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
                //背景透明
                params.format = PixelFormat.RGBA_8888;
                params.alpha =  0.7f;//透明度
              
                params.width = WindowManager.LayoutParams.WRAP_CONTENT;
                params.height = WindowManager.LayoutParams.WRAP_CONTENT;
               
                params.x = 0;
                params.gravity = Gravity.TOP | Gravity.FILL_HORIZONTAL;
               
    isNeedShow = true;
    mMainPanel = (LinearLayout) inflater.inflate(R.layout.notify_message_bottom, null);
    mLinearLayout = (LinearLayout)mMainPanel.findViewById(R.id.no_button_layout);
    mLinearLayout.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View v) {
      cancelDialog();
     }
    });
    titleText = (TextView) mMainPanel.findViewById(R.id.bottem_text);
    DisplayMetrics dm = new DisplayMetrics();
    dm = context.getResources().getDisplayMetrics();
//    titleText.setWidth(dm.widthPixels);
    titleText.setMarqueeRepeatLimit(-1);
    //次数减一才是真正的次数
    Log.d(TAG, "scrollCount: "+(scrollCount-1));
//    titleText.setMarqueeRepeatLimit(scrollCount-1);
    
    String content = mArgs.getTitle()+":"+mArgs.getContent();
    TextPaint paint = titleText.getPaint();
    float len = paint.measureText(content);
    //1280
    Log.d(TAG, "len: "+len+" ,dm.widthPixels: "+dm.widthPixels);
    for (int i = 0; (len < dm.widthPixels); i++) {
     len = paint.measureText(content);
     content = content + " ";
    }
    //tcl对接加入了这个。设置长度必须短于文本,否则不滚动。

1288
    Log.d(TAG, "content: "+content);
    Log.d(TAG, "new content: "+paint.measureText(content));
    titleText.setWidth((int)paint.measureText(content)-50);
    titleText.setText(content);
//    titleText.setMovementMethod(ScrollingMovementMethod.getInstance());
    wm.addView(mMainPanel, params);//加入到系统窗体中

版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/hrhguanli/p/4872028.html