마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

로또 어플만들어 보는중인데 backgound때문에 질문드립니다.

0 추천
 <TextView
            android:id="@+id/NB1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/texview_design"
            android:gravity="center"
            android:text="NB1"
            android:textColor="#FFFFFF"
            android:textSize="15dp" />

Xml 해당 부분

 

 

 

 

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#98AFC7" />

    <stroke
        android:width="2dp"
        android:color="#98AFC7" />

    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp" />
    
      <size
        android:height="45dp"
        android:width="25dp" />

</shape>

Xml의 backgound의 drawble

 

 

NB1.setText("" + arr[0]);

//NB1.setBackground(ResourcesCompat.getDrawable(Drawable, R.drawable.texview_design, null));

//NB1.setBackgroundColor(Color.parseColor(incolor(count++)));

java 코드부분

 

TextView design = (TextView) findViewById(R.drawable.texview_design);
TextView NB1, NB2, NB3, NB4, NB5, NB6;

선언 부분

 

안녕하세요. 안드로이드 공부중인 직장인입니다.

우연히 로또를 처음 구입해봐서 이거 재미있는데? 라고 생각해서 만들기 시작한 어플입니다.. 허접하지만..ㅎㅎ

우선 실행을 하면 이렇게 보여줍니다 (나중에 멏개를 뽑을건지 입력하는 부분이랑 리스트뷰를 따로 만들어서 넣을 생각입니다.)

그리고 START버튼을 누르면 번호를 랜덤으로 생성해서 중복 제거후 버블 정렬로 보여주는건데..

그냥 보여주면 심심할거 같아서 번호의 크기에 따라서 색을 입혀보자 생각해서 

//NB1.setBackgroundColor(Color.parseColor(incolor(count++)));
incolor 메서드를 만들었습니다. 숫자에 따라서 생상코드값을 리턴해주는 방식으로 했는데...
 
(우선 1개만 incolor메서드를 적용했습니다.)
 
실행후의 모습입니다...저는 기존의 모양을 유지하면서 배경색만 수정할라고 했는데 그부분이 부족한거 같습니다..
 
이럴때 사용하는 함수같은게 있나요 ? 알려주시면 감사하겠습니다.
익명사용자 님이 2015년 5월 4일 질문

1개의 답변

0 추천
 
채택된 답변
shape 을 하나 더 만드시고 저 안에 background 를 변경 한 xml 이름을 background 로 재 정의 하시면 됩니다.

혹은 checked button 과 같이 만들어서 selector 를 생성하셔도 됩니다.
aucd29 (218,390 포인트) 님이 2015년 5월 6일 답변
감사합니다. 아는게 별로없어서 둘다 해봐야겠습니다 ㅎㅎ
해봤는데 잘 모르겠습니다;
1. shape 를 색만 다르게해서 하나를 더 추가하신 뒤 이벤트에 따라서 background 를 코드로 변경하는 방법 이  하나 있고

2. shape 를 생성 한 뒤 selector 를 생성 하고 그 selector 를 background 로 적용하는 방법이 하나 있습니다. 하지만 selector 는 특정 event 에 따라서 변경이 되므로 타겟이 되는 텍스트가 일반 텍스트가 아닌 checked 형태가 가능한 텍스트여야 한다는 것 입니다.

일단은 1로 해보시고 시간이 되시면 2로도 고도화 해보세요
1번 방법이 기존에 하던방법이여서 우선 해볼라고 합니다.

shape를 인터넷에서 보고 적용한거여서 정확히 몰라서 질문드립니다.

1. 로또 번호에 따라서 색을 주고있습니다만 색이 5가지 정도 됩니다 그러면 shape파일을 6개 (기본색포함)를 만들어서 이벤트에 따라서 줘야 하는건가요?

2. xml에서  android:background="@drawable/text_design"라고 정의한뒤
java코드에서 TextView design = (TextView) findViewById(R.drawable.text_design); 이라고 정의 했습니다. 그뒤에 이벤트 타고 넣어주는 부분에 NB1.setBackground(design);이라고 하니까 오류가 나네요..다른방법으로 시도해도 오류가 나는거 같습니다.

어떤방식으로 입력을 해줘야 할까요 ?
지금 상태에서는 책을 먼저 사서 읽어보시는게 도움이 될것 같네요

일단은 design 이 textview 에 객체 이므로
design.setBackground(R.drawable.your_shape_name);

형태로 지정하면 됩니다. 색을 한 6개로 만든다고 치면 shape 를 색만큼 더 만드셔야 합니다.
답변 감사드립니다!
                NB1.setBackgroundResource(R.drawable.text_design_red);
라고 했더니 우선 수정이 되네요. 휴...알려주신 방법으로도 해봐야 될거같습니다.

다시 한번 감사드립니다.
...