0

みんな私は「向きの変更」でポップオーバーの「サイズを変更する方法」の問題を抱えています。Demo source-codeを入手してください。

問題を再現するには、次の手順を実行します。

  • 添付のソース コードをダウンロードし、開いて実行します。:)

    => ウィンドウの上部中央に名前のないボタンが 1 つだけある白いウィンドウが表示されます。

  • ボタンをクリックします。

    => ボタンから Popover コントロールを開きます。空白のテーブルビューが含まれています。

  • iPad の向きを縦 <-> 横から変更します。

    => 向きを変更すると、ポップオーバーのサイズは変更されますが、内部コンテンツ (Tableview) のサイズは変更されないことを確認してください。そのため、Tableview の周りに青い空白部分が残ります。

ポップオーバーを治療して心をつかむための答えがあれば教えてください。

ありがとう。

4

2 に答える 2

0

ポップオーバーのサイズを変更するのではなく、テーブルの高さと幅を変更し、単純なヘルパー関数を使用してポップオーバーのサイズを変更することをお勧めします(sth。このように:)

function resizepopover () {
    popover.height = popover.children[0].height;
    popover.width = popover.children[0].width   
    Ti.API.info("Popover Width: " + popover.width)
    Ti.API.info("Table Width:" + table.width)
    Ti.API.info("Popover height: " + popover.height)
    Ti.API.info("Table height:" + table.height) 
}

私が気づいたことの1つは、イベントリスナー内にテーブルとポップオーバーを作成することです。つまり、ラベルをクリックするたびに、新しいポップオーバーインスタンスと新しいテーブルインスタンスが作成されます(ただし、上書きするため、ガベージコレクションを取得する必要があります)毎回、古いものへの参照はもうないはずです)が、私はそれを避けます

そして、イベントリスナーの外側にポップオーバーとテーブルを作成します。showそして、クリックイベント関数は、ポップオーバーのメソッドとメソッドを呼び出すだけですresizepopover

var     popover = Ti.UI.iPad.createPopover({
        title : 'Search',
        arrowDirection : Ti.UI.iPad.POPOVER_ARROW_DIRECTION_UP,
        backgroundColor : 'white',
        layout: 'horizontal',
        height:"auto",
        width:"auto"
});
    var table = Titanium.UI.createTableView({
        top: 0,
        left: 0,
        right: 0,
        bottom: 0,
        height:900,
        width:700
    });
    popover.add(table);
    
label1.addEventListener('click', function (e) {
    popover.show({
        view : label1,
        animated : true
    });
    resizepopover();

});

Gesture イベント リスナーで、ポップオーバーの幅ではなくテーブルの幅を設定します。

[...]
    if(root.ui.isPortrait || root.ui.isLandscape) {
            
        if(root.ui.isPortrait) {
            table.width = 600;

            table.height = 800;
            
            Ti.API.info('Portrait');
        } else {
            table.width = 800;
            table.height = 600;
            Ti.API.info('Landscape');
        
        }

        resizepopover();

    }
[...]

それが1つの可能な方法です。

Resources.zip をDropboxに追加しました

于 2012-09-19T12:34:23.903 に答える
0

Titanium はこの問題のチケットを作成しましたが、これは同社の内部エラーです。

チケットリンク

于 2012-09-24T06:16:38.807 に答える