안드로이드 개발 질문/답변
(글 수 45,052)
현재 화면은 landscape로 고정되어 있는 상태입니다.
그리고 그 안에 포함되어있는 TextView만 portrait으로 설정해 주려고 하는데 잘 안되네요.
막상 찾아보니, 아래 글이 있더라구요.
명쾌한 대답은 나와있지만, 거의 모든 답이 나와있는 듯 합니다.
그런데 적용시키기가 쉽지않은데요...
현재는,
이렇게 Activity를 구현해 놓았고,
xml은 아래와 같습니다.
그리고, RTextView는
이렇게 구현되어있는데요. 보다시피 거의 붙여 넣었습니다.
xml에서 TextView를 RTextVIew로도 바꿔보았구요...
그런데 화면이 아예 나타나지도 않고 "죄송합니다."라며 에러메시지가 뜨더라구요..
혹시 무슨 문제인지 아시는 분, TextView를 회전 해 보신 분께서는 도움 부탁드립니다!!
그리고 그 안에 포함되어있는 TextView만 portrait으로 설정해 주려고 하는데 잘 안되네요.
막상 찾아보니, 아래 글이 있더라구요.
액티비티 ( orientation )Portrait로 고정후 일부뷰만 landscape 해주기
명쾌한 대답은 나와있지만, 거의 모든 답이 나와있는 듯 합니다.
그런데 적용시키기가 쉽지않은데요...
현재는,
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.scanner); RTextView textView = (RTextView)findViewById(R.id.testText); textView.setText("가로로 돌아가줘..."); }
이렇게 Activity를 구현해 놓았고,
xml은 아래와 같습니다.
<TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/testText"> </TextView>
그리고, RTextView는
public class RTextView extends TextView { public RTextView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { final float w = this.getMeasuredWidth(); final float h = this.getMeasuredHeight(); final float centerX = w / 2.0f; final float centerY = h / 2.0f; canvas.rotate(90, centerX, centerY); super.onDraw(canvas); } public void updateOrientation(int orientation) { this.setMeasuredDimension(this.getMeasuredHeight(), this.getMeasuredWidth()); postInvalidate(); } }
이렇게 구현되어있는데요. 보다시피 거의 붙여 넣었습니다.
xml에서 TextView를 RTextVIew로도 바꿔보았구요...
그런데 화면이 아예 나타나지도 않고 "죄송합니다."라며 에러메시지가 뜨더라구요..
혹시 무슨 문제인지 아시는 분, TextView를 회전 해 보신 분께서는 도움 부탁드립니다!!
아래 부분을 잘못쓰신거 같네요 ^^
protected void onDraw(Canvas canvas) {
if (mOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
final float w = this.getMeasuredWidth();
final float h = this.getMeasuredHeight();
final float centerX = w / 2.0f;
final float centerY = h / 2.0f;
canvas.rotate(90, centerX, centerY);
}
super.onDraw(canvas);
}