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

안드로이드에서 나이를 입력받고 싶은데,

0 추천
안드로이드 스튜디오에서 작업중입니다.

numberpicker을 이용하여 나이를 입력받고 싶은데, number picker 크기를 dp로 조정하려고 하니깐 크기가 전체적으로 조정되는게 아니라 짤리더라고요, 혹시 해결 방법이 있을까요?

 

아님 다른 방법으로 나이를 입력 받을 수 있는 방법이 있을까요? 도와주세요,ㅠㅠ
익명사용자 님이 2015년 6월 3일 질문
무슨 말을 하는지 모르겠에요 xml코드라도 올려주시던지요
윗분말씀대루 코드라도 좀 올려보심이.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="2dp"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_marginTop="2dp"
    android:orientation="vertical">

       <NumberPicker
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/numberPicker2"
            android:layout_gravity="right" />

        <NumberPicker
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/numberPicker"
            android:layout_gravity="right" />


</RelativeLayout>

 

 

나이를 입력받고 싶습니다. 소스처럼 numberpicker을 이용해서 숫자를 입력받고 싶은데, 숫자 입력을 하기 위해서 activity에서 어떻게 처리하면 좋을지 모르겠습니다. 또한 numberpicker의 사이즈를 줄이고 싶은데, 줄이면 numberpicker 모양이 짤립니다. ㅠㅠ 도와주세요. 

소스 추가로 올렸습니다. 확인해주세요~!
NumberPicker N1,N2;
        N1= (NumberPicker)findViewById(R.id.numberPicker);
        N2= (NumberPicker)findViewById(R.id.numberPicker2);

        N1.setMinValue(0);
        N2.setMinValue(0);
        N1.setMaxValue(99);
        N2.setMaxValue(99);

이런식으로 Java코드상에서 Value 값줄수 있더라고요


RelativeLayout 에서  android:orientation="vertical" 이거 적용안되는걸로 알고있는데 저건 리니어 레이아웃에 쓰이는 속성이에요;;
오리엔테이션은 리니어 레이아웃에서만 적용됩니다.
차라리 리니어 레이아웃으로 비율 조절 해보심이 어떨까여

1개의 답변

+1 추천

안드로이드에서 기본적으로 제공되는 UI 위젯을 그대로 사용하는 경우, 기본적으로 가진 사이즈보다 작은 사이즈로 변경하는 것에 대해서는 정상적으로 처리되지 않습니다.

 

방법은 1. 그대로 사용한다. -_-;;;

 

2. 커스텀 UI 를 만들어서 처리한다. 이정도로 생각되네요..

그리고 올려주신 코드로는 RelativeLayout에서는 2개의 위젯이 겹쳐서 보일 겁니다. RelativeLayout 에서는 상대 위치를 정확하게 지정해주셔야 합니다. 그게 아니라면 LinearLayout을 사용하셔도 되고요..
* {-webkit-touch-callout: text !important; -webkit-user-select: text !important; -khtml-user-select: text !important; -moz-user-select: text !important; -ms-user-select: text !important; user-select: text !important;}

dante2k (8,390 포인트) 님이 2015년 6월 3일 답변
그러면 custrom ui를 만들어서 사용하는 수 밖에 없겠네요?ㅠ

위에 numberpicker은 나이대를 설정하려고 두개 넣었는데, 위치를 제가 따로 지정해주지 않아서 겹칠 수 있을거 같애요,

numberpicker에 숫자를 입력하려고 하면 숫자가 입력이 안되더라고요, 혹시 숫자 입력 방법을 아시는지요?
혹시 0~9까지 입력을 2개 받아서 '1' + '8' 요런식으로해서 '18'을 입력받으시려는 건가요?
NumberPicker는 최소~최대 값 사이를 선택하게 하는 것으로 사용가능한 범위를 코드로 지정해 주어야 합니다.

– 메서드
void setMinValue(int minValue)                //화면에 나타낼 숫자의 최소와 최대값을 세팅함
void setMaxValue(int maxValue)
void setValue(int value)                       //초기값 설정

요렇게 3개의 메소드를 살펴보시면 될거 같네요.

예를 들어 최소 10세 부터 70세까지 입력을 받을 것이고, 최초 선택은 20세였으면 한다면

NumberPicker npAge = (NumberPicker) findview....
npAge.setMinValue(10);
npAge.setMaxValue(70);
npAge.setValue(20);

요렇게 하면 되지 않을까요?
dante2k님 말씀대로 한번 진행해볼게요~^^ 좋은 조언 감사합니다~! 앞으로도 많은 조언 부탁드릴게요~^^
아래와 같은 액티비티에 위의 layout을 물려놨는데, setMinValue와 setMaxValue의 사용법에 대해 조금 더 자세한 설명 부탁드려도 될까요?

-------------------------------------------------------------
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class mActivity extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

        return inflater.inflate(R.layout.activity_m, container, false);
    }
    
}

--------------------------------------------------------

public void setMaxValue (int maxValue)

Sets the max value of the picker.

Parameters
maxValue    The max value inclusive. Note: The length of the displayed values array set                       
                        via setDisplayedValues(String[]) must be equal to the range of selectable  
                        numbers which is equal to getMaxValue() - getMinValue() + 1.


public void setMinValue (int minValue)

Sets the min value of the picker.

Parameters
minValue    The min value inclusive. Note: The length of the displayed values array set via
                setDisplayedValues(String[]) must be equal to the range of selectable numbers   
                which is equal to getMaxValue() - getMinValue() + 1.

Android Developer에서 해당 내용을 알아보려 했는데, 조금 더 설명 해주시면 감사하겠습니다 ~!
...