1

メモ帳を作りたい。Android SDK が提供するサンプルのメモ帳を参照しています。私の問題は、editText で複数の行を描画できなかったことです。私はプログラムを正常に実行しましたが、editText には何も表示されず、さらに悪いことに単語を入力できませんでした。これが私のコードです。助けてくれてありがとう。

ビューでは、クラスパスを二重に確認しています。したがって、クラスパスに問題はないと思います。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/layouteditbottom"
        android:layout_alignParentBottom="true"
        android:paddingBottom="18dp"
        />  

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:layout_above="@+id/layouteditbottom">
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp" 
            android:text="@string/title"
            android:id="@+id/title_text1" />

        <EditText android:id="@+id/title"
            android:layout_toRightOf="@+id/title_text1"             
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:imeOptions="actionNext"
            android:textSize="18sp"/>

        <View xmlns:android="http://schemas.android.com/apk/res/android"
            class="com.example.apps2.MainActivity$LineEditText"
            android:id="@+id/body"
            android:layout_below="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:padding="5dp"
            android:scrollbars="vertical"
            android:fadingEdge="vertical"
            android:gravity="top"
            android:textSize="22sp"
            android:capitalize="sentences"/> 
    </RelativeLayout>
</RelativeLayout>

以下のコードはjava.

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     

    }

     public static class LineEditText extends EditText{
            // we need this constructor for LayoutInflater
            public LineEditText(Context context, AttributeSet attrs) {
                super(context, attrs);
                    mRect = new Rect();
                    mPaint = new Paint();
                    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
                    mPaint.setColor(Color.BLUE);
            }

            private Rect mRect;
            private Paint mPaint;       

            @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

3

背景画像を editText に線を追加して追加するだけです。

編集

次のように、 tileMode を repeat に設定して、ビットマップ ドローアブルを自分で作成します。

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:tileMode="repeat" />

android:srcテキストの1行の高さに一致する行とスペースを含む画像を指定します(フォントサイズによって異なります)。

于 2013-01-01T13:59:00.273 に答える
0

複数行の修正と単一行の使用のandroid:lines="2"修正に使用します。XML では、単一行を使用してそれを削除し、例に示すように使用します。android:singleLine="true"

以下に示すように編集テキストを変更します

  <EditText android:id="@+id/title"
        android:layout_toRightOf="@+id/title_text1"             
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        //android:singleLine="true"
        android:lines="2"// fix the multiline limit 2,3,4,5,6,7.....
        android:imeOptions="actionNext"
        android:textSize="18sp"/>
于 2013-01-01T13:28:32.360 に答える
0

答えてくれたみんなありがとう。ビューを最も外側のrelativeLayoutから内側のrelativeLayoutに置き換えることで解決しました。次のコードが答えです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/layouteditbottom"
        android:layout_alignParentBottom="true"
        android:paddingBottom="18dp"
        />  

    <RelativeLayout
        android:id="@+id/toplayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"        
        android:layout_alignParentTop="true">       
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp" 
            android:text="@string/title"
            android:id="@+id/title_text1" />                    
        <EditText android:id="@+id/title"
            android:layout_toRightOf="@+id/title_text1"             
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:imeOptions="actionNext"
            android:textSize="18sp"/>
        <TextView
            android:id="@+id/notelist_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"              
            android:paddingRight="10sp"             
            android:textSize="18sp" />      
    </RelativeLayout>

    <view
        xmlns:android="http://schemas.android.com/apk/res/android"
        class="com.example.note1.NoteEdit$LineEditText"
        android:id="@+id/body"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/layouteditbottom"
        android:layout_below="@+id/toplayout"      
        android:background="@android:color/transparent"
        android:capitalize="sentences"
        android:fadingEdge="vertical"
        android:gravity="top"
        android:padding="5dp"
        android:scrollbars="vertical"
        android:textSize="22sp" />
</RelativeLayout>
于 2013-01-01T15:30:15.080 に答える