2017-12-16 13 views
0

토스트는 화면 맨 아래에 배치하고 동시에 화면의 너비를 채우고 싶은 사용자 정의 레이아웃이 있습니다. 제대로 작동하지 않습니다.화면 맨 아래에 맞춤 레이아웃이있는 토스트 놓기

내 토스트 레이아웃 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 줄의 텍스트에서 단 한 줄의 텍스트로 바뀝니다.

이제보기에는 갑자기 적은 수직 공간이 필요하고보기가 아래쪽 가장자리를 위로 움직여 축소됩니다.

이 방법이 있습니까? 안드로이드가 가로로 채우도록 할 수 있습니까 처음으로그리고 아래로 이동합니까? 보기가 아래쪽이 아니라 위쪽에서 세로로 축소 될 수 있습니까? 의견의 일부

답변 :

  • 이 토스트가 표시되기 때문에 내 앱이 배경
  • 내 토스트에 표시하고있어 텍스트에있을 때 나는, 플로팅 작업을 사용할 수 없습니다 길이가 다르므로 나는 위의 코드는 내가 오류
,536,913,632를 재현 할 수 있었다 절대 간단
  • 얼마나 많은 줄의 텍스트 예측할 수 없습니다 10

    업데이트 :

    이 문제를 재현 위의 코드를 사용하고 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을 사용합니다. 그런 다음 토스트가 바닥에 있지는 않지만 매우 드뭅니다.

  • +0

    'TextView' 라인을 2 개로 수정해도 되겠습니까? – Xenolion

    +0

    장치에서 올바르게 재현 할 수 없습니다. 어떤 기기를 사용하여 테스트하고 있습니까? – PrisonMike

    +0

    아마도 가장 좋은 방법은 [snackbar] (https://developer.android.com/training/snackbar/action.html)를 사용하는 것입니다. –

    답변

    0

    적절한 답을 찾을 수 없었지만 대신 @ xenolion의 제안을 임시 해결책으로 사용했습니다.

    하나의 텍스트 뷰가있는 대신 4 개의 텍스트 뷰가 있으며, 대부분 텍스트 한 줄로 고정되어 필요없는 것들을 숨 깁니다. 코드에 대한 업데이트 된 답변을 참조하십시오.