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

[재업] 텍스트뷰 관련해서, 더보기부분을 만들어 보려고 하는데..

0 추천

 

안녕하세요 .. 며칠전에 같은 질문으로 올렸는데, 제가너무 부족해서 해결하지 못해서 다시금 글을 올립니다.

       ㅠ_ ㅠ

TextView 관련해서 아래의 2개의 사진과 같은 부분은 어떻게 구현을 해야하는지 감이 안와서

질문을 올려보았습니다. 일반적으로 텍스트들을 쭉 나열하기가 좀 지저분한것 같아서,

4줄이나 5줄이 넘을것 같을때에, 더보기가 나오도록 하고, 더보기를 누를경우에, 싹 다 텍스트들이

마저 나오도록 구현하고 싶은데.. 제 소스에 적용을 시켜보는게 어찌나 저에게는 어려운지 ,,..,.,.

원래 string에 텍스트들을 따로 써놓았는데.. xml에 쓰면 너무 길어서

String부분에 따로 적은것을 써주었습니다. <R.string.First_Movie_Contents>

 

이 문제로 인해서 제가 고민을 겪고 있어서 어떤분이 답변을 달아 주셨는데, 제가 그걸 제 소스에 적용을 못시

키고 며칠째쭈볏쭈볏 거리고 있어서 ㄷ움을 다시 청하고자 합니다.

 

그때 어떤 고마우신분이 달아주신 답변은 아래와 같습니다. 

최소로 화면에 보여질 글자수를 계산해서 substring으로 자르셔서 보여주셔야죠.
화면에 간단 설명이 보여지는지 bolean flag를 두고 flag에 따라서 더보기를 보여주시고
더보기를 클릭하면 전체 설명을 보여주시는 형태로 작업하시면 될 것 같습니다.

 

Seventh_TextView2 부분에 더보기 부분을 만들어야 하는데.. 어떻게 해야할까요..  settext 부분에 R.string.First_Movie_Contents은 String부분에 엄청 긴 텍스트로 구성이 되어 있습니다..     

아래의 소스를 보면 " // 이부분 입니다. " 부분에 따로 표시해 놓았습니다.


 

--> 그리고 저번 질문에서 많은 분들이 도움을 주셨는데.. 역시 제가 부족해서 만들기가 힘들었습니다ㅠ

http://www.masterqna.com/android/70084/%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%B7%B0-%EA%B4%80%EB%A0%A8%ED%95%B4%EC%84%9C-%EC%9D%B4%EB%9F%B0-%EA%B8%B0%EB%8A%A5%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94

 

제가 만든 소스를 아래에 한번 첨부해 보겠습니다ㅠ

소스가 8000자 길이 때문에 조금 초과하는 것은, 답변 부분에 따로 좀 달아보았습니다.

 

 

 [자바 코드 부분입니다.. ]

package ex.real_project;

 import android.content.Intent;
 import android.media.Image;
 import android.support.annotation.DrawableRes;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.HorizontalScrollView;
 import android.widget.ImageView;
 import android.widget.RatingBar;
 import android.widget.TextView;
 import android.widget.Toast;

 import org.w3c.dom.Text;

 import java.util.ArrayList;

 public class First_Movie extends AppCompatActivity {

     ImageView First_Activity;
     ImageView Before_Activity;
     ImageView Bell;
     ImageView Question;
     TextView Participation_Rate;
     HorizontalScrollView horizontalScrollView_image;

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

         int position = getIntent().getIntExtra("pos",0);

         First_Activity = (ImageView) findViewById(R.id.Top_Image_button);
         First_Activity.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(getApplicationContext(),Login_Activity.class);
                 startActivity(intent);
             }
         });

         Before_Activity = (ImageView) findViewById(R.id.Before_Activity);
         Before_Activity.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 finish();
             }
         });

        

 

공산당 (1,960 포인트) 님이 2016년 11월 2일 질문
공산당님이 2016년 11월 2일 수정
Bell = (ImageView) findViewById(R.id.bell_image);
         Bell.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 /*
                 Custom_Dialog dialog = new Custom_Dialog(First_Movie.this);
                 dialog.show();
                 */
             }
         });

         Question = (ImageView) findViewById(R.id.Dial_Image);
         Question.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 Custom_Dialog dialog = new Custom_Dialog(First_Movie.this);
                 dialog.show();
             }
         });



         switch(position)
         {

             case 0:
                 TextView Reservation_Percent1 = (TextView) findViewById(R.id.Reservation_Percent);
                 Reservation_Percent1.setText(R.string.First_Movie_Percent);

                 TextView tw1 = (TextView)findViewById(R.id.Seventh_TextView2); // 이부분 입니다.
                 tw1.setText(R.string.First_Movie_Contents);

                 break;

             case 1:
                 TextView Reservation_Percent2 = (TextView) findViewById(R.id.Reservation_Percent);
                 Reservation_Percent2.setText(R.string.Second_Movie_Percent);

                 TextView tw2 = (TextView)findViewById(R.id.Seventh_TextView2);
                 tw2.setText(R.string.Second_Movie_Contents);
                 break;

             case 2:
                 TextView Reservation_Percent3 = (TextView) findViewById(R.id.Reservation_Percent);
                 Reservation_Percent3.setText(R.string.Third_Movie_Percent);

               TextView tw3 = (TextView)findViewById(R.id.Seventh_TextView2);
                 tw3.setText(R.string.Third_Movie_Contents);
                 break;

             case 3:
                 TextView Reservation_Percent4 = (TextView) findViewById(R.id.Reservation_Percent);
                 Reservation_Percent4.setText(R.string.Fourth_Movie_Percent);

            TextView tw4 = (TextView)findViewById(R.id.Seventh_TextView2);
                 tw4.setText(R.string.Fourth_Movie_Contents);
                 break;

             case 4:
                 TextView Reservation_Percent5 = (TextView) findViewById(R.id.Reservation_Percent);
                 Reservation_Percent5.setText(R.string.Fifth_Movie_Percent);

           TextView tw5 = (TextView)findViewById(R.id.Seventh_TextView2);
                 tw5.setText(R.string.Fifth_Movie_Contents);
                 break;
         }

     }
 }

1개의 답변

0 추천
답변을 하자면 너무 길어 질거 같아 넘어 가려 했는데.... 또 올리셨네요~~!

더보기 버튼을 만들고 싶으시면 더보기 버튼을 만드셔야 하는게 먼저 아닌가요? 저절로 되는건 하나도 없어요 직접 다 만들어 주셔야 해요.
더보기 버튼 만드시고 클릭 리스너에 제가 답변해드릴 소스 넣으시면 됩니다.
ThisPlus (46,920 포인트) 님이 2016년 11월 2일 답변
흑 ㅠ 네 .. 제가 부족해서 다시금 글을 올렸네요.
다시한번 눈 크게뜨고 천천히 해보겠습니다
ThisPlus님 제가 만든 과정에서 어디가 잘못되었는지 한번 보아 주실수 있을까요?

TextView txt1;   를 위쪽에 선언을 하였습니다.
그리고 난 뒤에,  txt1 = (TextView) findViewById(R.id.Seventh_TextView2);
라고 선언을 한 뒤에  버튼이벤트 부분에 아래와 같이 만들었는데, getMaxLines() 부분에 다음과 같은 에러가 뜹니다.

Call Require API level 16 (current min is 15 ) : android:widget.TextView#getMaxLines .. 라고 뜹니다.

어떻게 해야할지 ㅠ ㅠ..
영어를 읽어보니까 처음엔 버전문제인가 싶기도 해서, 안드로이드 스튜디오를 껏다 켜보았는데도 업데이트 관련된것이 안떠서 어떻게 해야할지 ..
해당 메소드는 sdk버전 16부터 지원하는 함수입니다.
minSdk버전이 16이하로 되있나 보네요~! 16이상으로 설정해주세요
제가 말씀하시는걸, 잘 이해했는지 한번 확인해 보고 싶습니다.
위의 글의 맨 아래에, 제가 버전의 사진을 하나 넣어 보았습니다.
저기 보면, sdk 16버전이 not installed로 되어 있는데 4.1 저 부분을 설치해주면
되는건가요?
sdk다운 받을필요는 없구요
build.gradle에 minSdkVersion을 16이상으로 하시면 됩니다.
제가 안드로이드에 대해서 여러방면으로 잘 몰라서, 말씀하신 build.gradle의 부분을 어떻게 찾아가야 할지 잘 모르겠어요 ..
제가 글에 올린 맨 아래쪽의 사진에서 찾는건가요? 아니면, 안드로이드 프로그램의 build부분에서 찾는건가요?
두번쨰의 경우에는 build부분에 gradle가 없더군요.
build.gradle은 파일입니다.
좌측에 위치한 창에서 찾아서 고쳐주시고 상단에 syncnow눌러주심 됩니다.
감사합니다!감사합니다!감사합니다!
...