반응형
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 |