0

我想在我的 android 记事本应用程序中显示行编辑文本,我在 Activity 中创建了 linededittext 类。但我无法在 xml 文件中为我们设置视图。它给出了 android.view.inflateException,二进制 xml 文件第 17 行 inflate 类”

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.android.sassypuma.todo.task.Add_Task.LinedEditText
android:id="@+id/note"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:padding="5dip"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top"
android:textSize="22sp"
android:capitalize="sentences"
/>
</LinearLayout>

我使用 LinedEditText 类的活动:

public class Add_Task extends Activity{

private EditText description;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_task);
    description = (EditText)findViewById(R.id.note);
}

}

LinedEditText 活动:

class LinedEditText extends EditText {
private Rect mRect;
private Paint mPaint;

// we need this constructor for LayoutInflater
public LinedEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public void init(){
        mRect = new Rect();
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        mPaint.setColor(0xFF668800); //SET YOUR OWN COLOR HERE
}
@Override
protected void onDraw(Canvas canvas) {
    //int count = getLineCount();

    int height = getHeight();
    int line_height = getLineHeight();

    int count = height / line_height;

    if (getLineCount() > count)
        count = getLineCount();//for long text with scrolling

    Rect r = mRect;
    Paint paint = mPaint;
    int baseline = getLineBounds(0, r);//first line

    for (int i = 0; i < count; i++) {

        canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
        baseline += getLineHeight();//next line
    }

    super.onDraw(canvas);
  } 
}

请建议。谢谢...

4

3 回答 3

0

在您的活动中,您可以使用您的自定义名称调用该自定义 EditText,如下所示。

public class Add_Task extends Activity{

LinedEditText description;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_task);
    description = (LinedEditText)findViewById(R.id.note);
}
}

这样它就可以工作了

于 2013-06-25T06:36:15.510 回答
0

您不使用视图作为标记名。您使用完全限定的类名

于 2013-06-25T05:27:18.707 回答
0

亲爱的兄弟从 LinedEditText 类中删除构造函数的第三个参数

于 2020-03-30T16:27:23.650 回答