Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я этого добился:
<TableRow android:id="@+id/rowName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView android:id="@+id/lblSomeLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="100"
android:text="Your Text Here" />
</TableRow>
когда вы назначаете функции переменным без ключевого слова var, они либо перезаписывают локальную переменную с этим именем, либо добавляются в глобальное пространство имен. (так что ваш do_stuff является глобальной функцией, а это не то, что вы хотите)
один из способов сделать то, что вы хотите, - это явно указать, где вы хотите, чтобы ваша функция располагалась.
(function($) {
$.fn.foo = function(options) {
// whatever $().foo() should do
};
$.fn.foo.do_stuff = function() {
console.log("hello world!");
};
$.fn.foo.do_stuff.do_other_stuff = function(){
alert("who are you?");
};
})(jQuery);
Изменить :
Это работает, потому что все функции в javascript являются объектами, что означает, что вы можете присваивать значения любому произвольному свойству.
Если вы хотите получить доступ к переменным других функций, вы можете переместить определения внутри других функций, например:
$.fn.foo.do_stuff = function() {
console.log("hello world!");
$.fn.foo.do_stuff.do_other_stuff = function(){
alert("who are you?");
};
};
но это будет означать, что функция определена только после того, как вы запустите другую функцию, и что каждый раз, когда вы запускаете функцию, она будет перезаписывать последнее определение.
Возможно, более идеальным решением было бы, чтобы каждая функция возвращала объект, содержащий вложенную функцию, например:
(function($) {
$.fn.foo = function(options) {
// whatever $().foo() should do
var do_stuff = function(do_stuff_args) {
console.log("hello world!");
// do stuff with options and do_stuff_args
var do_other_stuff = function(other_args) {
alert("who are you?");
// here you have access to options, do_stuff_args, and other_args
};
return {
do_other_stuff: do_other_stuff
};
};
return {
do_stuff: do_stuff
}
};
})(jQuery);
и вызывала его, используя
foo().do_stuff(some_options).do_other_stuff(other_options);
или
var a = foo(stuff).do_stuff(some_options);
a.do_other_stuff(foo);
a.do_other_stuff(bar);