2011-08-04 10 views
3

OK、私はAndroidアプリを構築することになり始めました。少なくともプログラマが数日後にできることは十分です。これまでに学んだことを誇りに思っています。PopupWindowの幅と高さ

とにかく、私はSharedPreferneceを取得し、その情報がnullであるかどうかをチェックし、 "ログイン"フィールドとオプションを保持するPopupWindowを取得するよりも、主なアクティビティを強制的にログインさせたいと思っています。

このPopupWindowにはFlipperが内蔵されています。このオプションは、特定のオプションが選択されたときに正常に動作しています。

は、私はこのPopupWindowを表示する問題はちょうど私がPopupWindow.setAtLocation()今

を設定するときなどのコンテンツ(wrap_content)の大きさであることを持っています、ここで私が取得するためにやろうとしてきたものですポップアップの大きさ - ここで何回か述べたように:ポップアップがポップアップの実際のレイアウトのインフレータであることを

popup.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
final PopupWindow pw = new PopupWindow(popup,popup.getMeasuredHeight(),popup.getMeasuredWidth(), true); 

注、PWは、実際のP​​opupWindowオブジェクトです。

は今、私はちょうど、ポップアップウィンドウの実際のサイズ(それがページに渡って随分れていないその方法を取得したいのではなく、ちょうど中央には、通常のポップアップはずのように見える。また

私はpw.update()を試してみましたが、これは、ViewFlipperと一緒に、私はそれがページを切り替えるときにポップアップのサイズを更新したい(ページがページごとに上下にサイジングする必要があります)それは非常にうまく動作しませんでした。

答えて

1

をあなたはあなたのPopupWindowに追加される実際のレイアウトを測定したい。私はちょうどPopupWindowListViewを置くのと同様の問題を解決した。T彼はあなたのViewonMeasure()を上書きします。それが変わる度にViewFlipperが覚えています。

@Override 
public void onMeasure(int x, int y) 
{ 
    super.onMeasure(x, y); 

    if(x == View.MeasureSpec.UNSPECIFIED && y == View.MeasureSpec.UNSPECIFIED) 
    { 
     //measure your child views here 

     //tell the view it has been measured 
     this.setMeasuredDimension(width, height); 
    } 
}