我有一个xml布局,我想在2种情况下使用: 1- for listView适配器中的项目(不连续滚动) 2-用于另一项活动(带滚动)
我已经尝试将此布局设为Scrollable(父级上的scrollView) - 当你为listView项目时(阻止滚动效果) - 当它用于其他活动时,启用scrollView 但是当我制作这个解决方案时,我无法在listView项目上使用onClickListner。
我的xml文件:list_messages_fragment_item.xml
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/light_gray_2"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:descendantFocusability="blocksDescendants"
isScrollContainer="false"
>
-- My One chlid LinearLayout containing my content
</ScrollView>
这个Xml文件是我的listView的适配器:(在这种情况下不需要滚动)
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
vi = inflater.inflate(R.layout.list_messages_fragment_item, null);
...
}
此xml文件也用于活动布局:(在这种情况下需要滚动)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().hide();
setContentView(R.layout.list_messages_fragment_item);
...
}
答案 0 :(得分:1)
您需要在getView方法中添加触摸拦截侦听器
ScrollView sv = (ScrollView) findViewById(R.id.scrollView); // this is view from inflated layout
sv.setOnTouchListener(new OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
@Override
public boolean onTouch(View v, MotionEvent event) {
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
这将启用列表项上的触摸侦听器
答案 1 :(得分:0)
我找到了我想要的解决方案。 我在我的xml文件中使用LinearLayout父级。 我为活动创建了另一个例子:这个布局包含一个ScrollView,里面我包含我想要重复使用的xml文件。 要在活动中使用的新布局:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:orientation="vertical"
android:scrollbars="none">
<include layout="@layout/list_messages_fragment_item"/>
</ScrollView>
list_messages_fragment_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/light_gray_2"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:descendantFocusability="blocksDescendants"
>
......我的布局内容
</LinearLayout>