我有一个问题,一直在努力解决。我创建了一个你可以调用它的“博客”,我可以选择发一个新帖子。当我发布新帖子时,会添加一个div。但是,当添加div时,前一个帖子会向右移动。我尝试了各种各样的建议,但我无法得到它。这是一张图片:
我想要的是让div正确排列。这是我的代码:
row = 0;
offset = 0;
oldPos = -1;
final String nonBreakingSpace = "\u00A0\u00A0";
textV.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int pos;
StringBuilder sb = new StringBuilder(textV.getText());
pos = textV.getLayout().getLineStart(row);
if (oldPos!=-1 && pos<oldPos)
{
sb.delete(oldPos, oldPos + nonBreakingSpace.length());
}
if (offset==0)
{
row++;
offset = -1;
}
else
{
offset = 0;
}
final int lineCount = textV.getLayout().getLineCount();
pos = textV.getLayout().getLineStart(row);
oldPos = pos+offset;
if (row>=lineCount)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
removeLayoutListenerPre16(textV.getViewTreeObserver(), this);
} else {
removeLayoutListenerPost16(textV.getViewTreeObserver(), this);
}
sb.insert(0, nonBreakingSpace);
sb.insert(sb.length(), nonBreakingSpace);
}
else
{
sb.insert(pos+offset, nonBreakingSpace);
}
textV.setText(sb);
}
});
@SuppressWarnings("deprecation")
private void removeLayoutListenerPre16(ViewTreeObserver observer, OnGlobalLayoutListener listener){
observer.removeGlobalOnLayoutListener(listener);
}
@TargetApi(16)
private void removeLayoutListenerPost16(ViewTreeObserver observer, OnGlobalLayoutListener listener){
observer.removeOnGlobalLayoutListener(listener);
}
注意:我猜“run snipped”似乎没有运行php。
答案 0 :(得分:1)
听起来你并没有在正确的地方关闭div。
确保缩进正确无误,并确保在<div>
关闭之前,foreach
内打开的每个foreach
也已关闭。
当你在这样的循环中有很多标记时,我喜欢使用foreach():
endforeach;
,因为这样可以更容易地阅读代码。
<?php foreach ($posts as $post):?>
<div>
<h2 class ="title">
<a href="index.php?id=<?php echo $post['post_id'];?>" style="color:white"><?php echo $post['title'];?></a>
</h2>
<p>
Posted on
<?php echo date('d-m-Y h:i:s', strtotime($post['date_posted'])); ?>
in
<a href="category.php?id=<?php echo $post['category_id']; ?>", style="color:green">
<?php echo $post['name']; ?>
</a>
<br></br>
<?php if(getPermissions($username)): ?>
<a href="edit_post.php?id=<?php echo $post['post_id']; ?>", style="color:green">Edit Post |</a>
<a href="delete_post.php?id=<?php echo $post['post_id']; ?>", style="color:green"> Delete Post</a>
<?php endif; ?>
</p>
<div class="contents">
<?php echo nl2br($post['contents']); ?></div>
<div>
</div>
<?php endforeach;?>
为每个帖子添加包装div将在标记内部提供一个框。 Div有显示:block是默认的。这比使用<br />
或<p>&nsbp;</p>
更好,因为当你需要设置该元素的样式时,它会给你更多的控制。