在PopupWindow中没有ScrollView的滚动效果

时间:2012-01-05 13:17:28

标签: android

我想实现一个复杂效果的弹出菜单,其中一个是支持滚动。看来PopupMenu和AlertDialog无法满足我的需求。所以我用ScrollView尝试了PopupWindow。

首先,我准备了一个布局,它有一个简单的结构,就像ApiDemo所示:

ScrollView
    LinearLayout with Vertical attribute
       TextView
       TextView  
       TextView  
       ...  

其次,我创建了一个具有此布局和200width / 300height的PopupWindow,并在showAtLocation()的某个位置显示它。

我可以显示滚动条并具有滚动效果,但LinearLayout中的TextViews不会滚动(它们处于固定位置)!

出了点问题,但我没有意义。 (Android3.0的)

感谢任何能给我一些提示的热心人。

-_- !!

2 个答案:

答案 0 :(得分:2)

我也遇到过类似的问题。有些如何在scrollview窗口中包装相对布局不适用于popupwindow。

我尝试在scrollview下包装各个视图,它对我有用。请看下面的内容。希望这有帮助

 <RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#eebd9c"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
   <ScrollView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/textView2" >

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:ems="15"
        android:gravity="fill_horizontal"
        android:minLines="6"
        android:scrollbars="vertical"
        android:singleLine="false"
        android:text="Multiline text"
        android:textAppearance="?android:attr/textAppearanceSmall" />
    </ScrollView></RelativeLayout>

答案 1 :(得分:0)

我认为您的要求可以通过Dialog尝试我给出的代码来实现

protected void showInputDialog() {
        final Dialog splRerDialog = new Dialog(getContext());
        splRerDialog.setTitle("Special request.");

        ScrollView scroll = new ScrollView(getContext());

        LinearLayout lin = new LinearLayout(getContext());
        lin.setLayoutParams( new LayoutParams(350,200));
        lin.setGravity(Gravity.CENTER);
        lin.setOrientation(LinearLayout.VERTICAL);

        final EditText req = new EditText(getContext());
        req.setLayoutParams( new LayoutParams(300,300));
        lin.addView(req);

        Button btn = new Button(getContext());
        btn.setText("Ok");
        btn.setLayoutParams( new LayoutParams(200,LayoutParams.WRAP_CONTENT));
        btn.setGravity(Gravity.CENTER);

        btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                splRerDialog.dismiss();
            }
        });
        lin.addView(btn);

        scroll.addView(lin);

        splRerDialog.addContentView(scroll, new LayoutParams(LayoutParams.WRAP_CONTENT,200));   

        splRerDialog.show();
    }