在公司新的项目中要求了加上跑马灯效果,在找了好多博客之后发现跑马灯在失去焦点之后都不能进行,网上一大堆都是一个人发好多人转发,绝大数都是没用的
可能我的方法不是很好但是可能先解决掉让这个效果跑起来
<TextView
android:id="@+id/marquee_text"
android:layout_marginLeft="32dp"
android:text="123123123123123123123123123 "
android:textColor="#FF000000"
android:textStyle="italic"
android:textSize="9sp"
android:shadowRadius="3.0"
android:shadowDx="10"
android:shadowDy="10"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_gravity="center"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<requestFocus/>
</TextView>
在XML中就是复制别的博客上的我就不去一一解释是干什么的了如果实在有人不知道可以在开发工具上去翻译
我的解决方法就是
marquee_text = mRootView.findViewById(R.id.marquee_text); marquee_text.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus==false){ v.setFocusable(true); v.setFocusableInTouchMode(true); v.requestFocus(); v.requestFocusFromTouch(); } } });
可能不是太好看就是一个关于控件的判断是否获取焦点,如果没用获取到我们直接动态的让他获取到就好了
本人用的是ViewPager+TabLayout在切换页面在切换回来都可以正常的展示