在我的ViewPager中,有一个由LinearLayout保存的ImageButton和TextView,现在我将它们改为一个带有coupound drawable的TextView。
<?xml version="1.0" encoding="utf-8"?>
<com.iclinux.android.custom_views.NoScrollTextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:iclinux="http://schemas.android.com/apk/res-auto"
android:clipChildren="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:gravity="center"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableTop="@drawable/icon_bg"
style="@style/EllipsizedSingleLineTextView"
android:textSize="@dimen/grid_item_title_size"
>
</com.iclinux.android.custom_views.NoScrollTextView>
我的问题是:触摸TextView时我无法向左或向右翻转,但如果删除“android:gravity =”center“,它就可以工作......不幸的是,文本不会居中...
public class NoScrollTextView extends TextView {
public NoScrollTextView(Context context) {
super(context);
}
public NoScrollTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE)
return false;
return super.onTouchEvent(event);
}
}
这里发生了什么?非常感谢。
答案 0 :(得分:21)
android:singleLine="true"
强制将 android:scrollHorizontally
设置为true,并且仅在您更改 {{1}时根据我的测试} (即默认的重力似乎没有给出这个问题)。
我在TextView中解决了这个问题,只需将 android:gravity
替换为 android:singleLine="true"
在此更改之后,我没有更多ViewPager问题。现在,在使用 android:maxLines="1"
触摸元素时按预期滚动。
答案 1 :(得分:10)
通过覆盖解决:
@TargetApi(14)
@Override
public boolean canScrollHorizontally(int direction) {
return false;
}
答案 2 :(得分:2)
我通过这样做完成了它:
textView.setHorizontallyScrolling(false);
答案 3 :(得分:0)
我遇到了这种情况。我的解决方案;
我在XML的视图中添加了android:scrollHorizontally="false"
,然后使用android:maxLines
而不是android:singleLine
属性。现在可以正常工作了。
attrs.xml中的文档;
@deprecated不推荐使用此属性。使用
maxLines
而是更改静态文本的布局,并使用 改为在inputType属性中使用textMultiLine
标志 用于可编辑的文本视图(如果singleLine和inputType均为 提供时,inputType标志将覆盖singleLine的值。
<attr name="singleLine" format="boolean" />