小编CJ *_*ies的帖子

setText()和append()之间的区别

我很好奇setText()和append()正在创建的差异.我正在写一个带行号的非常基本的编辑器.我有一个TextView来保存左边的行号,与右边的EditText配对来保存数据.这是XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:gravity="top">
    <TextView
        android:id="@+id/line_numbers"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="0dip"
        android:gravity="top"
        android:textSize="14sp"
        android:textColor="#000000"
        android:typeface="monospace"
        android:paddingLeft="0dp"/>
    <EditText
        android:id="@+id/editor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="text|textMultiLine|textNoSuggestions"
        android:imeOptions="actionNone"
        android:gravity="top"
        android:textSize="14sp"
        android:textColor="#000000"
        android:typeface="monospace"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

忽略我正在做的其他一些事情,我遇到的最奇怪的事情是当我使用append()时出现的额外间距(假设已经初始化了所有这些).

下面结合XML,在TextView和EditText之间设置一个刷新边框.

theEditor = (EditText) findViewById(R.id.editor);
lineNumbers = (TextView) findViewById(R.id.line_numbers);
theLineCount = theEditor.getLineCount();
lineNumbers.setText(String.valueOf(theLineCount)+"\n");
Run Code Online (Sandbox Code Playgroud)

但是,最后一行更改为此,并且突然显示TextView中的每一行在EditText之前的右侧都有填充.

lineNumbers.append(String.valueOf(theLineCount)+"\n");
Run Code Online (Sandbox Code Playgroud)

这不是世界末日.但我很好奇是什么导致了这种行为.由于我是这门语言的新手,我唯一能想到的可能就是,当追加将可编辑放在那里时,它会添加填充.如果我能得到答案,我可以用更简单的附加替换所有这些讨厌的行:

lineNumbers.setText(lineNumbers.getText().toString()+String.valueOf(newLineCount)+"\n");
Run Code Online (Sandbox Code Playgroud)

android append textview settext

10
推荐指数
3
解决办法
4万
查看次数

AngularJS:ng-repeat中的ng-model setter

我已经找到了一些关于如何获得ng-model内部值的一些很好的答案ng-repeat,但到目前为止,我还没有找到任何覆盖setter的内容.假设我有这样的事情:

<div ng-repeat="item in getItems()">
    <input ng-model="itemTitle" ng-model-options={getterSetter:true}">
</div>
Run Code Online (Sandbox Code Playgroud)

如果我有一个输入框,我会使用类似这样:

...
var _val = '';
$scope.itemTitle = function(val){
    return angular.isDefined(val) ? (_val = val) : _val;
}
...
Run Code Online (Sandbox Code Playgroud)

但是,这会改变每个输入框的值.是否可以定义变量和setter,可能使用数组?或者有更好的方法来获取和设置ng-repeat内的输入框?

javascript angularjs angularjs-directive angularjs-ng-repeat angularjs-ng-model

5
推荐指数
2
解决办法
1646
查看次数