2014-10-20 4 views
1

Android 프로그래밍을 처음 사용하고 그림과 관련하여 몇 가지 기본적인 문제가 있습니다. 내 활동 내에서 여러 영역을 표시 할활동 내에서 여러보기 그리기

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


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Text" 
     android:id="@+id/textView" 
     android:textSize="18dp" 
     android:textStyle="bold" /> 

</RelativeLayout> 

:

나는 다음과 같습니다 .xml 파일을 통해 텍스트 뷰를 표시하는 활동을합니다. 그렇게하기 위해 View를 확장하는 새로운 클래스를 만들었습니다. 클래스를 인스턴스화하고 내 직사각형을 내 액티비티에 표시하도록 관리했습니다. 어쩌면 여기서 단어 레이아웃을 사용해야합니다. 확실하지 않습니다.

내가 만든 클래스 :

public class DrawRectangle extends View { 
    Paint paint = new Paint(); 
    int x,y; 
    int length,width; 

    public DrawRectangle(Context context,int _x,int _y, int _length, int _width){ 
     super(context); 
     x = _x; 
     y = _y; 
     length = _length; 
     width = _width; 

    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(3); 
     canvas.drawRect(x, y, x+length, y+length, paint); 
    } 
} 

그리고 DrawRectangle 클래스의 인스턴스를 생성 활동의 내부 기능 :

public void drawRectangle(){ 

    DrawRectangle rectangle = new DrawRectangle(this,100,100,50,50); 
    // rectangle.setBackgroundColor(Color.TRANSPARENT); 
    setContentView(rectangle); 
} 

이 무슨 일이 있었는지입니다 :

  • 사각형 올바르게 그려졌습니다
  • 볼 수 없습니다. 더 이상 textview

DrawRectangle 클래스의 다른 인스턴스를 만들려고했는데 하나만 볼 수 있습니다 (마지막으로 화면에 설정). 나는 그 문제가 모든 관점을 취하여 모든 것 앞에 놓여 있다는 사실에서 비롯된 것이라고 생각합니다. 그래서 나는 투명 선을 사용하여 배경색을 변경하려고 :

rectangle.setBackgroundColor(Color.TRANSPARENT); 

또는 오류가 발생하지 않았다

rectangle.setBackgroundColor(Color.parseColor("#00000000"); 

, 그러나 다른 사각형 또는 텍스트 뷰를 볼 수 없습니다입니다.

어떻게해야합니까? 나는이 모든 것에 관한 미스 - 이해를 의심한다.

고마워요!

답변

1

setContentView에서 활동 (TextView 포함)의 xml 레이아웃을 전달해야합니다. 나중에이 레이아웃에 다른 뷰를 추가 할 수 있습니다. 예 :

ViewGroup layout = (ViewGroup) findViewById(R.id.your_layout_id); 
TextView tv = new TextView(this); 
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tv.setText("Added tv"); 
layout.addView(tv); 
+0

응답 용 Thx. 내 레이아웃 ID를 어떻게 알 수 있습니까? findViewByID (R.id.your_layout_id)에 관해서. – Xema

+0

레이아웃 XML 파일의 이름입니다. – JoaoBiriba

+0

내 레이아웃에 ID가 없으므로 약간 잃어 버렸습니다. 이제 작동 중입니다! 고마워 ! – Xema