0

ファイル項目のリストを含むカスタム レイアウトのポップアップ ウィンドウが表示されます。カスタム レイアウトの高さに基づいて、ポップアップ ウィンドウの高さを設定したいと考えています。私は試した

レイアウト:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fileName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="#303030"
    android:orientation="vertical" >
   <TextView
            android:id="@+id/newfile"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:text="first item"
            android:textColor="@color/white"
            android:drawableLeft="@drawable/zw_new"
            android:drawablePadding="5dp"
            android:padding="10dp"
            android:textSize="20sp" />
   <View style="@style/hrView" />
   <TextView
            android:id="@+id/rename"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:text="second item"
            android:textColor="@color/white"
            android:drawableLeft="@drawable/zw_rename"
            android:drawablePadding="5dp"
            android:padding="10dp"
            android:textSize="20sp" />
</LinearLayout>

style.xml

 <style name="hrView">
          <item name="android:layout_width">fill_parent</item>
          <item name="android:layout_height">1dp</item>
          <item name="android:background">#4f4f4f</item>
    </style>

コード:

public static PopupWindow fileMenu= null; 
    public void showfileMenu(){         
        View fileMenuView=null;

            fileMenuView =  getLayoutInflater().inflate (R.layout.zw_filemenu, null);
        fileMenuView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

        int h = fileMenuView.getMeasuredHeight();
        int w = fileMenuView.getMeasuredWidth();
            fileMenu=showPopup(fileMenuView,w,h);
        }

PopupWindow pw=null;
public PopupWindow showPopup(View view,int w,int h) {
    pw = new PopupWindow(EditorActivity.getActivity());
    pw.setWidth(w);
    pw.setHeight(h);
    pw.setTouchable(true);
    pw.setFocusable(true);
    pw.setOutsideTouchable(true);
    pw.setTouchInterceptor(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                pw.dismiss();

                return true;
            }

            return false;
        }
    });
    pw.setOutsideTouchable(false);
    pw.setContentView(view);
    return pw;

}

高さは 106、幅は 191 です。このため、ポップアップ ウィンドウには最初のテキスト ビュー「最初の項目」(壊れすぎている) のみが表示され、2 番目の項目は高さが低いために非表示になります。私を助けてください。

4

1 に答える 1

0

これは、ポップのようなものを作成するのに役立ちます

private PopupWindow mpopup;

View popUpView = getLayoutInflater().inflate(R.layout.yourxml, null); // inflating popup layout
        mpopup = new PopupWindow(popUpView, LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT, true); // Creation of popup
        mpopup.setAnimationStyle(R.style.DialogAnimation);
        mpopup.showAtLocation(popUpView, Gravity.BOTTOM, 0, 0); // Displaying

ここで私は与えます LayoutParams.FILL_PARENTLayoutParams.WRAP_CONTENT

于 2013-04-16T13:39:12.400 に答える