2017-10-02 7 views
0

CustomTextView를 사용해 보았지만 모든 텍스트가 한 줄로 표시됩니다. 나는 여러 줄로 텍스트를 보여주고 싶다. 여기여러 줄로 된 CustomTextView에 텍스트를 표시하는 방법

내가 minLinesmaxLinessingleLine="false", inputType="textMultiLine"하지만 여전히이 같은 표시를 사용

<com.textdesign.views.CustomTextView 
      android:id="@+id/customTextview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_centerInParent="true" 
      android:singleLine="false" 
      android:inputType="textMultiLine" 
      android:maxLines="40" 
      android:lines="20" 
      android:minLines="5" 
      android:text="this is sample text for multi-lines\nthis is sample text for multi-lines\nthis is sample text for multi-lines\nthis is sample text for multi-lines" 
      android:textStyle="bold" /> 

내 코드 :

여기

enter image description here

내 CustomTextView 클래스 난 내 코드이 중 일부를 숨길 수 있습니다 코드는 한 줄에 텍스트도 표시합니다.

public class CustomTextView extends AppCompatTextView { 

    //Shadow Variable 
    public static int shadow_length = 30; 

    public int x_direction = 1; 
    public int y_direction = 1; 
    boolean shadow_Enable = false; 
    int color = Color.BLACK; 
    float[] hsv = new float[]{0, 0, 0}; 
    int getcol; 
    Paint paint; 
    Paint paint1; 
    Paint paint2; 

    public CustomTextView(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet,android.R.attr.textViewStyle); 
     paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paint1 = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paint2 = new Paint(Paint.ANTI_ALIAS_FLAG); 
     textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); 
     textPaint.setTextSize(getTextSize()); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
      getPaint().setMaskFilter(null); 
     TextPaint textPaint = getPaint(); 
     float x_position = (getWidth() - getPaint().measureText(getText().toString()))/2f; 
     float y_position = (int) ((getHeight()/2) - ((textPaint.descent() + textPaint.ascent())/2)); 

     getPaint().setColor(shadowColor); 

     //Center point for transformation 
     PointF center_Point = new PointF(getWidth()/2f, getHeight()/2f); 
     Camera camera = new Camera(); 

       canvas.drawText(getText().toString(), x_position, y_position, getPaint()); 
       } 
} 
+1

사용자 지정 textview 클래스 표시 –

+0

문제를 일으키는 XML이 아닙니다. 변경되지 않은 'TextView'와 XML을 'RelativeLayout'안에 넣으면 네 줄이 생깁니다 (왼쪽 상단에 있음). – kalabalik

+1

도움을 받으려면 전체 XML 파일과 CustomTextView의 코드를 추가해야합니다. – Frank

답변

0

난 그냥 x_position 및 y_position 제거와 함께

@Override 
    protected void onDraw(Canvas canvas) { 

    //......... 
    StaticLayout mTextLayout = new StaticLayout(getText().toString(), getPaint(), canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true); 
        canvas.save(); 
    float textHeight = getTextHeight(getText().toString(), textPaint); 
    int numberOfTextLines = mTextLayout.getLineCount(); 
    float textYCoordinate = mTextBounds.exactCenterY() - ((numberOfTextLines * textHeight)/2); 
    // text will be drawn from left 
    float textXCoordinate = mTextBounds.left; 
    canvas.translate(0, 0); 
    // draws static layout on canvas 
    mTextLayout.draw(canvas); 
    canvas.restore(); 
    //..... 
} 

0

사용

android:maxLength="10"
길이 요구 사항

당으로, 최대 라인

+0

새 행이 아닌 10 자만 표시됩니다. – Attaullah

+0

10 자 이후에 새로운 줄이 만들어지고 숫자 10은 변수가 많아서 설정할 수 있습니다. –

+0

작동하지 않으면 한 줄만 표시됩니다. – Attaullah