2016-01-22 42 views
2

繪製多行我試圖繪製的EditText線。我有一個滾動視圖內這是在EDITTEXT線editText.When數目是小於可容納鑑於總的可能行,我仍然要繪製爲存在於EDITTEXT文本已經畫出的線條後左行。中的EditText

例如,假設如果沒有在EditText上線的3個則只有3線繪製。但我想在整個在這種情況下視圖中繪製線條。

我已經寫了下面的代碼,但它只是畫線高達文本的高度不超過that.It將是一個很大的幫助,如果有人可以幫助它。

public class DisplayActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display); 

    final TextView textView_header = (TextView) findViewById(R.id.header); 

    final String randomText = getIntent().getExtras().getString("Data"); 
    int index = Integer.parseInt(randomText); 
    int pos = MainActivity.keyList.get(index); 

    final String text = MainActivity.settings.getString("data" + pos, ""); 
    final String text_2 = MainActivity.settings_2.getString("data" + pos, 
      ""); 

    textView_header.setText(text); 

    LayoutParams textViewLayoutParams = new LayoutParams(
      LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

    LinearLayout ll = (LinearLayout) findViewById(R.id.editText_layout); 

    ScrollView sv = new ScrollView(this); 

    sv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.MATCH_PARENT)); 

    LinedEditText et = new LinedEditText(this, null); 

    et.setLayoutParams(textViewLayoutParams); 

    et.setText(text_2); 

    et.setKeyListener(null); 

    et.setEnabled(false); 

    et.setTextColor(Color.BLACK); 

    et.setBackgroundColor(Color.TRANSPARENT); 

    sv.addView(et); 

    ll.addView(sv); 

} 

public class LinedEditText extends EditText { 

    private Rect mRect; 

    private Paint mPaint; 

    public LinedEditText(Context context, AttributeSet attrs) { 

     super(context, attrs); 

     mRect = new Rect(); 

     mPaint = new Paint(); 

     mPaint.setStyle(Paint.Style.STROKE); 

     mPaint.setColor(Color.GRAY); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     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); 
    } 
    } 
} 

這是我的活動

<RelativeLayout 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:background="@drawable/page2" 
    tools:context="com.example.writenote.DisplayActivity" > 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="match_parent" 
     android:layout_height="140px" /> 

    <LinearLayout 
     android:id="@+id/editText_layout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/line" 
     android:layout_marginTop="0px" 
     android:orientation="vertical" /> 

    <TextView 
     android:id="@+id/line" 
     android:layout_width="match_parent" 
     android:layout_height="1px" 
     android:layout_below="@+id/header" 
     android:layout_marginLeft="20px" 
     android:layout_marginRight="5px" 
     android:layout_marginTop="10dp" 
     android:background="#a9a9a9" /> 

    <TextView 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView" 
     android:layout_marginLeft="30px" 
     android:layout_marginRight="25px" 
     android:layout_marginTop="30px" 
     android:text="hello" 
     android:textColor="#000" 
     android:textSize="60px" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="260px" 
     android:layout_height="260px" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/circleedit" /> 

</RelativeLayout> 

XML佈局,我認爲這個問題是在的getHeight(),這是在onDraw有。它正在返回由三行組成的editext的高度。有沒有辦法提供包含edittext的linearlayout的高度?我試圖提供的LinearLayout的高度的onDraw方法,但沒有效果,它仍然繪製3條線。 我試圖做到這一點的onDraw方法

//ll is linearLayout 
int height = ll.getHeight(); 

回答

0

你的問題來自於ScrollView,這個ViewGroup以及由含有可變內容的大小,並添加滾動條若該含量比佈局所提供的空間更大,從而你不能用裏面的match_parent配置的ScrollView(您EditText將被自動設置爲wrap_content其高度)。

您只需撥打sv.fillViewPort(true);onCreate如果比ScrollView高度較小舒展的內容,如在the android documentation規定。

0
<EditText 
android:id="@+id/editText" 
android:width="wrap_content" 
android:height="wrap_content" 
android:maxLines="2"/> 

maxLines是您需要的行數;

要在編輯文本多行....設置編輯文本寬度是固定的,高度是warap_content那麼automaticall進入新的生產線....