나는 목록보기가있는 AndroidSlidingUpPanel을 보유하고 있습니다. 내 문제는 창이 확장되어 있고 ListView를 스크롤하려고하면 창이 대신 스크롤됩니다. onInterceptTouchEvent를 재정의하고 특정 영역을 MotionEvent.ACTION_DOWN (또는 이와 비슷한 것)으로 설정해야한다는 것을 알았지 만, 실제로이 부분을 잃어 버렸습니다.AndroidSlidingUpPanel에서 ListView가 스크롤되지 않음
당신은 내가이 문제를 해결하는 방법을 도와하고 말해 주시겠습니까, 내 코드는 다음과 같습니다
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
sothree:collapsedHeight="40dp"
sothree:dragView="@+id/name"
sothree:shadowHeight="1dp" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#eee"
android:clickable="true"
android:focusable="false" >
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:text=""
android:textSize="14sp" />
<ListView
android:id="@+id/lv_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="40dp" />
</RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
그리고 MainActivity :
public class MainActivity extends Activity implements PanelSlideListener, OnItemClickListener {
public static final String SAVED_STATE_ACTION_BAR_HIDDEN = "saved_state_action_bar_hidden";
private ListView _menuListView;
private SlidingUpPanelLayout _slideUpPane;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
setContentView(R.layout.activity_main);
_slideUpPane = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);
_slideUpPane.setShadowDrawable(getResources().getDrawable(R.drawable.above_shadow));
_slideUpPane.setAnchorPoint(0.2f);
_slideUpPane.setPanelSlideListener(this);
ArrayList<MenuItem> menuItems = new ArrayList<MenuItem>();
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
menuItems.add(new MenuItem("Menu Item"));
_menuListView = (ListView) findViewById(R.id.lv_menu);
_menuListView.setAdapter(new MenuAdapter(this, menuItems));
_menuListView.setOnItemClickListener(this);
boolean actionBarHidden = savedInstanceState != null ?
savedInstanceState.getBoolean(SAVED_STATE_ACTION_BAR_HIDDEN, false): false;
if (actionBarHidden) {
getActionBar().hide();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onPanelSlide(View panel, float slideOffset) {
Log.i(TAG, "onPanelSlide, offset " + slideOffset);
if (slideOffset < 0.2) {
if (getActionBar().isShowing()) {
getActionBar().hide();
}
} else {
if (!getActionBar().isShowing()) {
getActionBar().show();
}
}
}
@Override
public void onPanelCollapsed(View panel) {
Log.i(TAG, "onPanelCollaped");
}
@Override
public void onPanelExpanded(View panel) {
Log.i(TAG, "onPanelExpanded");
}
@Override
public void onPanelAnchored(View panel) {
Log.i(TAG, "onPanelAnchored");
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
_slideUpPane.collapsePane();
}
}
나는 이것들을 사용하려고 노력하지만 그것을하는 법을 알 수 없었다 : ,763,210 ListView in SlidingUpPanel is not scrollable
처음에는이 솔루션을 사용했지만 부모가 'MotionEvent'를 가로 챌 필요가 있기 때문에 제대로 작동하지 않았습니다. AndroidSlidingUpPanel의 전체 onInterceptTouchEvent에 댓글을 달았습니다. 이제는 매력처럼 작동합니다. 나는 그들이 왜 ~ 80 줄의 코드를 추가하는지 궁금 해서요. – seb
@galvan 나는 같은 일을했지만 listview를 스크롤 할 수 없다. 더 할 일이 있거나 문제가 어디에 있습니까? –
@iDroidExplorer 귀하의 목록 구조가 동일하므로 동일한 레이아웃 구조인지 확인하십시오. – galvan