2014-12-12 4 views
-1

안녕하세요. 문제가 생겼습니다. 문제를 해결하기 위해 문서를 찾지 못했습니다. ImageView에 텍스트를 삽입해야합니다. 예를 들어 ImageView 내부에서 EditText를 사용하고 확대/축소하려면 캔버스로 생각해야합니다. , 내가 ImageView를 클릭하면 EditText가 나타나고 ImageView의 모든 위치에 글을 쓰고 싶습니다. 그러나 일반 EditText가 필요하지 않습니다. 투명 EditText는 문자 만 표시하고 ImageView의 일부인 경우 텍스트를 관리 할 수 ​​있습니다. 알고 있지 않습니다. 내가 잘 설명 할 수 있다면, 문서, 플러그인 또는 예제를 공유해 주시길 부탁드립니다.ImageView의 Android Text

+0

를 확장하지만, 이미지가 동적으로 추가 및 텍스트입니다 너무 . 항상 다른 이미지이며, 뷰에서 확대/축소 및 페인트 등을해야합니다. – JDeLeon92

답변

1

나는이 보이지 않는 거의 내가 필요하지만 편집 텍스트를 해결하고 페인트를 저장합니다.

public class DrawText extends ImageView { 

Canvas canvas = new Canvas(); 
public String text = ""; 
float pointX = 50; 
float pointY = 50; 

public DrawText(Context context) { 
    super(context); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    Paint paint = new Paint(); 

    canvas.save(); 
    paint.setColor(Color.WHITE); 
    paint.setTextSize(30); 
    paint.setAntiAlias(true); 
    canvas.drawText(text, pointX, pointY, paint); 
    canvas.restore(); 
} 

public DrawText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public void setTexto(String text) { 
    this.text = text; 
    invalidate(); 
} 

@Override 
public void invalidate() { 
    super.invalidate(); 
} 

public void setXY(float pointX, float pointY) { 
    this.pointX = pointX; 
    this.pointY = pointY; 
    System.out.println("ON TOUCH"); 
    System.out.println(pointX + pointY); 

    invalidate(); 
} 

내 주요 활동

공용 클래스 MainActivity는 활동 {

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

    final EditText et = (EditText) (findViewById(R.id.editText)); 
    final com.example.imgintext.DrawText imgView = (com.example.imgintext.DrawText) findViewById(R.id.imageView1); 
    et.setVisibility(View.INVISIBLE); 
    et.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      imgView.setTexto(et.getText().toString()); 

      return false; 
     } 
    }); 

    imgView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      imgView.setXY(event.getX(), event.getY()); 
      et.requestFocus(); 
      return false; 
     } 
    }); 
} 

AND FINALLY MY XML

android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<com.example.imgintext.DrawText 
    android:id="@+id/imageView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:src="@drawable/tigres" 
    android:clickable="true" /> 

<EditText 
    android:id="@+id/editText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="142dp" 
    android:ems="10" > 
    <requestFocus /> 
</EditText> 

1

속성이 필요한 이미지로 설정된 상태에서 TextView를 사용하십시오. 이렇게하면 매우 쉽게 관리 할 수 ​​있습니다. 예는 :

<TextView 
     android:id="@+id/text1" 
     android:layout_height="50dp" 
     android:layout_width="100dp" 
     android:text="Hello" 
     android:background="@drawable/required_image" 
/> 

동적으로 자바에서 텍스트 뷰의 배경을 변경할 수 있습니다. 이; 도움이

TextView text1 = (TextView) findViewById(R.id.text1); 
text1.setBackgroundResource(R.drawable.img); 

희망)