2013-01-09 3 views
8

나는이 프로젝트에 참여하고 변경하고 응용 프로그램의 배경을 설정하고 다음토스트 배경색 수행하여 흰색에

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
    <item name="android:actionBarSize">140dp</item> 
    <item name="android:background">#ffffff</item> 
</style> 

이는 매력이 있지만 문제는 토스트 메시지가 지금되고 있다는 것입니다 작동 흰색 배경으로 표시합니다. 이상한 점은 프로젝트에 스플래시 화면을 통합 한 것이고 사용자가 로그인하면 토스트 메시지가 정상적으로 표시된다는 것입니다.

정말 이상하고 문제에 대한 도움을 주시면 감사하겠습니다.

편집 : 추가 된 스크린 샷 표시 문제. 스크린 샷 단지 (원치 않는 효과) 초기 토스트으로한다는 페이드 아웃되고 (기본값) 새로운 하나에서 페이딩한다.

enter image description here

답변

14

도움이 될 것이다. Toast 배경색이 변경된 이유는 내부에 포함 된 View 객체의 컨텍스트에서 전달하는 방식 때문이었습니다.

코드의 다음 줄은 배경색이 원치 않는 화이트 색상으로 변경시킬 것이다 :

Toast.makeText(v.getContext(), "Checking login details...", Toast.LENGTH_SHORT).show(); 

기본 시스템 스타일로 토스트를 반환 코드 행 :

Toast.makeText(getApplicationContext(), "Checking login details...", Toast.LENGTH_SHORT).show(); 

나는 단지 배울 때처럼 이것을 고치는 것에 대한 거대한 문제가 있는지 나는 확신하지 못한다. 누구든지 문제를 볼 수 있으면 공유하십시오. 그래도 잘 작동하는 것 같습니다. 나를 getApplicationContext()을 사용하기 위해

+1

이것은 매우 도움이되었다. – FtheBuilder

0

당신은보기를 사용할 수 있습니다 쉽게 사용자 정의하고 세련된 토스트 메시지를 . 그리고 아마도 레이아웃을 toast_layout으로 변경할 수 있습니다.

확인이 게시물 Toast background changing to match Activity's Theme는, 내가이 문제를 해결하면

+0

처럼 보이도록, 그것은 투명으로 설정 될 수있다. 내 토스트 중 일부가 다른 스타일의 다른 스타일을 가지고있는 이유를 이해하지 못하는 실제 ... – Javacadabra

+0

향후 질문을 위해 문제의 완전한 컨텍스트를 유지하는 데 더 많은 코드를 게시하는 것이 좋습니다. 어쨌든, 축하해. –

0

를 선택할 수 없습니다, 그리고이 같은 문제를 가지고 다른 사람을 위해, 당신은과 같이 기본 설정으로 다시 토스트를 설정할 수 있습니다

//Create your Toast with whatever params you need 
Toast toast = Toast.makeText(getActivity(), "Refreshing...", Toast.LENGTH_SHORT); 

//Set the background for the toast using android's default toast_frame. 
//Optionally you can set the background color to #646464 which is the 
//color of the frame 
View view = toast.getView(); 
view.setBackgroundResource(android.R.drawable.toast_frame); 

//Get the TextView for the toast message so you can customize 
TextView toastMessage = (TextView) view.findViewById(android.R.id.message); 

//Set background color for the text. 
toastMessage.setBackgroundColor((Color.parseColor("#646464"))); 
toast.show(); 
0

윈스 롭의 대답에 추가합니다. 대신 # 646464으로 텍스트 상자의 배경색을 설정하는 토스트 내가 실제로 우연히 원래 반투명 토스트

private void showToast(Context context,String msg,int duration){ 
     Toast toast = Toast.makeText(context,msg,duration); 

     View view = toast.getView(); 
     view.setBackgroundResource(android.R.drawable.toast_frame); 

     TextView toastMessage = (TextView) view.findViewById(android.R.id.message); 

     toastMessage.setBackgroundColor(Color.TRANSPARENT); 

     toast.show(); 
    }