0

内部dojox.mobile.EdgeToEdgeに一連の s を含む標準リストがあります。dojox.mobile.ListItem各リスト項目の高さが同じであることを確認する必要があります。以下の不十分に描かれた表現を参照してください。

EdgeToEdgeListsの標準ListItem:

+-------------------+
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
+-------------------+

EdgeToEdgeList高さが可変のリスト アイテムの標準。variableHeightリスト項目にプロパティを設定することで達成されます:

+-------------------+
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
| with some long    |
| text and variable |
| height that wraps |
| to next line      |
|-------------------|
| Standard ListItem |
+-------------------+

EdgeToEdgeList同じ高さのリスト アイテム (小さいリスト アイテムは最大の高さを「取る」):

+-------------------+
|                   |
|                   |
| Standard ListItem |
|                   |
|                   |
|-------------------|
|                   |
|                   |
| Standard ListItem |
|                   |
|                   |
|-------------------|
| Standard ListItem |
| with some long    |
| text and variable |
| height that wraps |
| to next line      |
|-------------------|
|                   |
|                   |
| Standard ListItem |
|                   |
|                   |
+-------------------+

3番目のソリューションを複製しようとしています。これを行う標準的な方法はありますか?

編集:プログラムでリストを作成していることに言及しなかったため、事前に最大のアイテムの高さを知りません。このようなものは機能しますか?

var largest = 0;
array.forEach(list.getChildren(), function(child) {
    var childHeight = domStyle.get(child.domNode, 'height');

    largest = (childHeight > largest) ? childHeight : largest;
});

array.forEach(list.getChildren(), function(child) {
    domStyle.set(child.domNode, 'height', largest + 'px');
});

これは一種の「ハック」のようです。

4

1 に答える 1

0

.mblListItemCSSクラスのheightプロパティをオーバーライドします。

高さはデフォルトで43pxだと思います。

編集:あなたのコードはうまくいくと思いますがListItem、Dojoがそれぞれに与える高さを計算し、最大のものを取り、それをそれぞれに適用するように、'sをvariableHeightに設定する必要があります。あなたが書いたものと似ていますが、variableHeightを追加し、最大の高さを適用するときにそれを取り除きます。

var largestHeight = 0;
var list = dijit.byId("list");
dojo.forEach(data, function(record) {
    var listItem = new dojox.mobile.ListItem({
        label: data.label
        variableHeight: true,
    }); 
    list.addChild(listItem); 
    var currentHeight = (dojo.style(listItem.domNode, 'height');
    largestHeight = (currentHeight > largestHeight ? currentHeight : largestHeight);
});

dojo.query('.mblListItem', dojo.byId('list')).forEach(function(node) {
    dojo.removeClass(node, 'mblVariableHeight');
    dojo.style(node, 'height', largestHeight + 'px');
});
于 2012-07-12T19:39:14.727 に答える