반응형
Android에서 알림의 가운데 텍스트
토스트의 모든 텍스트를 중앙에 표시하는 방법이 궁금합니다. 예를 들어, 2 줄의 텍스트가있는 토스트가 있습니다. 순전히 미적인 텍스트를 왼쪽 정렬 대신 정렬하고 싶습니다. 문서를 살펴본 결과 아무것도 없습니다. 내가 놓친 간단한 방법이 있습니까?
고마워 크리스
토스트의 사용 setView(view)
을 공급하는 기능을 View
함께 Gravity.CENTER
.
다른 답변 에서 수정 :
Toast toast = Toast.makeText(this, "Centered\nmessage", Toast.LENGTH_SHORT);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
if( v != null) v.setGravity(Gravity.CENTER);
toast.show();
Toast는 TextView를 기반으로 기본 중력을 유지합니다. 예를 들어 다음과 같이 자신만의 TextView를 통과합니다.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="all the text you want"
/>
그리고 다음과 같이 Toast에 TextView를 할당합니다.
Toast t = new Toast(yourContext);
t.setView(yourNewTextView);
더티 해킹이지만
((TextView)((LinearLayout)toast.getView()).getChildAt(0))
.setGravity(Gravity.CENTER_HORIZONTAL);
해킹없이 :
String text = "Some text";
Spannable centeredText = new SpannableString(text);
centeredText.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),
0, text.length() - 1,
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
Toast.makeText(getActivity(), centeredText, Toast.LENGTH_LONG).show();
중앙 외에 또 다른 정렬이 있습니다.
Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
findViewById(android.R.id.message)
틀린 말 은 아니지만 (미래?) 구현 차이가있는 경우를 대비하여 약간 다른 접근 방식을 사용했습니다 .
void centerText(View view) {
if( view instanceof TextView){
((TextView) view).setGravity(Gravity.CENTER);
}else if( view instanceof ViewGroup){
ViewGroup group = (ViewGroup) view;
int n = group.getChildCount();
for( int i = 0; i<n; i++ ){
centerText(group.getChildAt(i));
}
}
}
그리고 :
Toast t = Toast.makeText(context, msg,Toast.LENGTH_SHORT);
centerText(t.getView());
t.show();
그것은 나를 위해 일합니다.
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
toast.show();
에서 코 틀린 :
fun makeToast(context: Context, resId: Int) {
val toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT)
val view = toast.view.findViewById<TextView>(android.R.id.message)
view?.let {
view.gravity = Gravity.CENTER
}
toast.show()
}
이 변형은 LinearLayout을 사용하는 것입니다. :)
Toast SampleToast = Toast.makeText(this, "This is the example of centered text.\nIt is multiline text.", Toast.LENGTH_SHORT);
LinearLayout OurLayout = (LinearLayout) SampleToast.getView();
if (OurLayout.getChildCount() > 0)
{
TextView SampleView = (TextView) OurLayout.getChildAt(0);
SampleView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
}
SampleToast.show();
Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG);
t.setText("Password Does't match...");
t.setGravity(0, 0, 0);
t.show();
토스트를위한 간단한 코드
참조 URL : https://stackoverflow.com/questions/3522023/center-text-in-a-toast-in-android
반응형
'ProgramingTip' 카테고리의 다른 글
신속하게 배열을 JSON 문자열로 변환 (0) | 2020.12.31 |
---|---|
Cordova + Angularjs + 장치 준비 (0) | 2020.12.31 |
비트 XOR (배타적 OR)은 무엇을 의미합니까? (0) | 2020.12.31 |
PHP를 사용하여 디렉토리의 모든 폴더 하위 폴더 및 파일 프로그램 (0) | 2020.12.31 |
자바 스크립트 : 배열로 주어진 객체 이름을 사용하여 중첩 된 객체를 동적으로 만드는 방법 (0) | 2020.12.31 |