我听说有传言说,在C中,包含在结构中的数组可能在数组的元素之间添加了填充.显然,填充量不能在任何元素对之间变化,或者使用简单的指针算法计算数组中的下一个元素是不可能的.
这个谣言还指出,结构中没有包含的阵列保证不包含填充物.我知道至少那部分是真的.
因此,在代码中,谣言是:
{
// Given this:
struct { int values[20]; } foo;
int values[20];
// This may be true:
sizeof(values) != sizeof(foo.values);
}
Run Code Online (Sandbox Code Playgroud)
我非常肯定sizeof(values)会永远相等sizeof(foo.values).但是,我无法在C标准(特别是C99)中找到明确证实或否认这一点的任何内容.
有谁知道这个谣言是否在任何C标准中得到解决?
编辑:我知道在数组foo.values的结尾和结构的结尾之间可能存在填充foo,并且标准声明在开始foo和开始之间不存在填充foo.values.但是,是否有人引用或引用标准,其中表示元素之间没有填充foo.values?
所以我有一个直接放在体内的元素:
<body>
<div id="header">Some stuff...</div>
Other stuff...
</body>
Run Code Online (Sandbox Code Playgroud)
以下是使用的CSS:
body{
text-align:center;
}
#header{
margin:auto;
}
Run Code Online (Sandbox Code Playgroud)
因此#header div设置为100%宽度(默认值)并居中.问题是,窗口边框和#header元素之间有一个"空格"...喜欢:
| |----header----| |
^window border ^window border
Run Code Online (Sandbox Code Playgroud)
我尝试用javascript调整它,它成功地将元素大小调整到确切的窗口宽度,但它并没有消除"空间":
$('#header').width($(window).width());
Run Code Online (Sandbox Code Playgroud)
一个解决方案似乎是添加以下CSS规则(并保持上面的javascript):
#header{
margin:auto;
position:relative;
top:-8px;
left:-8px;
}
Run Code Online (Sandbox Code Playgroud)
在我的浏览器中,这个"空间"是8px - 但我不确定在所有浏览器中是否相同?我在Ubuntu上使用Firefox ...
那么摆脱这个空间的正确方法是什么 - 如果它是我上面使用的,那么所有的浏览器都是一样的吗?
我正在尝试使用Twitter Bootstrap找到一种相对简单的方法来为我的容器添加填充.一切正常,但在某些分辨率下,窗口不适合屏幕.我想我必须通过从各种跨度类中删除一些宽度来补偿填充?
这是相当辛苦的工作,仅仅数学是有问题的.出于这个原因,也许最好使用Bootstrap显然附带的较少文件.
唯一的问题是我似乎无法在任何地方找到它们.这些文件确实存在吗?不幸的是,我只知道如何使用像Codekit这样的应用程序而不是使用命令行.
或者,如果其他人知道有任何方法将填充添加到容器中,那将非常感激.谢谢.
为什么不起作用padding-top?设置的高度div.
HTML:
<div class="menu">
<a href="#">APIE MUS</a>
<a href="#">REKLAMA</a>
<a href="#">PARTNERIAI</a>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.menu {
width: 300px;
height: 30px;
background: red;
}
.menu a {
padding-top: 10px;
}
Run Code Online (Sandbox Code Playgroud) 我有一个宽度为70%的元素,它浮动在一个宽度为30%的元素旁边,但是当我添加25px填充时,它会扩展元素并打破格式,有没有办法让它只增加内容距离边缘而不是只是让它变大?
我正在尝试创建一个textarea看起来完全像一个div.
但是,在iOS上有3个像素来自我无法删除的地方.
这是我的代码:
<!doctype html>
<title>Textarea test</title>
<style>
textarea, div
{
background: yellow;
font: 13px arial;
border: 0;
padding: 0;
border-radius: 0;
margin: 0;
-webkit-appearance: none;
}
</style>
<div>test</div>
<hr>
<textarea>test</textarea>
Run Code Online (Sandbox Code Playgroud)
这样渲染(我放大了):

截图显示,在我要删除的文本之前有3个像素.据我所知,它不是边距/填充或边框.
这发生在我的iPhone和iPad上,都运行iOS 4.3.并且要清楚; 我的桌面上的Safari/Firefox/Chrome上没有显示这3个额外的像素.或者我兄弟的Windows Phone,就此而言.
编辑2011-08-10:
我刚刚测试了这个<input type=text>并且出现了相同的"填充"事物,除了它是1像素而不是3.
我需要有一个LinearLayout内部SrollView,并且LinearLayout必须有一个边距ScrollView.首先,我能想到解决这个问题的唯一方法是LinearLayout在另一个内部LinearLayout设置最后一个布局设置的边距.如果将它们放在外面,它们将无法工作LinearLayout.
例:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/layout_color_yellow">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我需要这样做?
如果我只有一个LinearLayout就没有利润......
例:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

然后,搜索一些类似的问题,我发现了一些布局,这让我想到了使用填充ScrollView代替边距LinearLayout.这也解决了我的问题,我不需要LinearLayout另一个内部.这是一个更优雅的解决方案.
不过,我想了解为什么内部的简单边距在内部时LinearLayout不起作用ScrollView.因为如果它不在里面它确实可以正常工作ScrollView.
谁知道为什么?
我有以下内容LinearLayout.我不明白的是,如果我将背景设置为另一个图像,则重置填充信息.有办法防止这种情况吗?
<LinearLayout android:id="@+id/aPanel"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:background="@drawable/bkground"
android:paddingLeft="15dp" android:paddingRight="15dp">
<!-- some children here -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
当我改变LinearLayout aPanel的背景可绘制时,我看到孩子的位置被移动了.
我通过互联网搜索,我必须使用错误的关键字,因为我找不到任何东西.我想创建一个文本框,其文本从远离左侧开始.

就像那样.
对不起,如果这个问题已经提出,我已经深入搜索,没有任何内容.
现在,我知道:
String.format("%05d", price);
Run Code Online (Sandbox Code Playgroud)
将左边的零填充我的价格,因此25的价格将导致00025
如果我想将它们填充到右边怎么办,结果是25000?如何仅 使用String.format模式执行此操作?