토스트는 화면 맨 아래에 배치하고 동시에 화면의 너비를 채우고 싶은 사용자 정의 레이아웃이 있습니다. 제대로 작동하지 않습니다.화면 맨 아래에 맞춤 레이아웃이있는 토스트 놓기
내 토스트 레이아웃 toast.xml :
<?xml version="1.0" encoding="UTF-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ee222222"
android:textColor="#ffffff" />
토스트, MyToast.java을 표시하는 코드 : 내가 설정 한 경우
: 여기
View view = inflater.inflate(R.layout.toast, null);
TextView textView = phoneToastView.findViewById(R.id.text);
textView.setText("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18");
Toast toast = new Toast(getContext());
toast.setGravity(Gravity.BOTTOM | Gravity.FILL_HORIZONTAL, 0, 0);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
내 문제입니다 중력에서 중력까지, 나는 화면 하단에 토스트를 얻는다. 중력을 FILL_HORIZONTAL로 설정하면 화면이 가로로 채워집니다. 둘 다 사용하면 화면이 수평으로 채워지지만 토스트와 화면 하단에는 간격이 있습니다.
나는 어떻게 될지 생각합니다. 안드로이드가보기를 만들고, 맨 아래로 이동하고, 다음에을 펼칩니다. 이제 텍스트에는 갑자기 더 많은 공간이 생겨 일부 화면과 일부 텍스트의 경우 2 줄의 텍스트에서 단 한 줄의 텍스트로 바뀝니다.
이제보기에는 갑자기 적은 수직 공간이 필요하고보기가 아래쪽 가장자리를 위로 움직여 축소됩니다.
이 방법이 있습니까? 안드로이드가 가로로 채우도록 할 수 있습니까 처음으로과 그리고 아래로 이동합니까? 보기가 아래쪽이 아니라 위쪽에서 세로로 축소 될 수 있습니까? 의견의 일부
답변 :
- 이 토스트가 표시되기 때문에 내 앱이 배경
- 내 토스트에 표시하고있어 텍스트에있을 때 나는, 플로팅 작업을 사용할 수 없습니다 길이가 다르므로 나는 위의 코드는 내가 오류
업데이트 :
이 문제를 재현 위의 코드를 사용하고 5
아래는 길이가 다른 세 개의 텍스트와 스크린 샷에 대한 링크 가상 장치 넥서스에 응용 프로그램을 실행할 수 있습니다.
업데이트 2 : 짧고 긴 텍스트가 하단에 표시됩니다, 중간 텍스트는 토스트 아래 간격 얻을 내 솔루션을
내 토스트 레이아웃 토스트.XML :
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ee222222"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#ffffff" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#ffffff" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:ellipsize="end"
android:textColor="#ffffff" />
</LinearLayout>
토스트, MyToast.java 표시하는 새로운 코드 : 내 요구를 들어
View view = inflater.inflate(R.layout.toast, null);
TextView textView1 = phoneToastView.findViewById(R.id.text1);
textView1.setText("Some text on one line");
TextView textView2 = phoneToastView.findViewById(R.id.text2);
textView2.setText("Some more text on one line");
TextView textView3 = phoneToastView.findViewById(R.id.text3);
textView3.setText("Even more text, and this text is much longer, not fitting on one line at all.");
// If I don't need the unpredictable third line of text, hide the view
textView3.setVisibility(View.GONE);
Toast toast = new Toast(getContext());
toast.setGravity(Gravity.BOTTOM | Gravity.FILL_HORIZONTAL, 0, 0);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
을, 나는 대부분의 맨 아래에있을 것입니다 textviews 1, 2 그리고 토스트를 사용합니다 화면 (텍스트가 한 줄로 고정되어 있기 때문에). 일부 상황에서는 텍스트의 길이를 예측할 수 없으며 텍스트 뷰 3을 사용합니다. 그런 다음 토스트가 바닥에 있지는 않지만 매우 드뭅니다.
'TextView' 라인을 2 개로 수정해도 되겠습니까? – Xenolion
장치에서 올바르게 재현 할 수 없습니다. 어떤 기기를 사용하여 테스트하고 있습니까? – PrisonMike
아마도 가장 좋은 방법은 [snackbar] (https://developer.android.com/training/snackbar/action.html)를 사용하는 것입니다. –