2016-09-06 53 views
0

我最近想要更多的樣式來反應的ToastAndroid,所以我編輯了ToastModule.java文件,希望它可以工作,但每次運行時我都會得到舊的Toast視圖而沒有我的更改,請幫助我真的需要爲我的項目如何重建改變ToastModule.java原生態反應

編輯代碼

package com.facebook.react.modules.toast; 

import android.view.Gravity; 
import android.widget.Toast; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.graphics.Color; 

import com.facebook.react.bridge.NativeModule; 
import com.facebook.react.bridge.ReactApplicationContext; 
import com.facebook.react.bridge.ReactContextBaseJavaModule; 
import com.facebook.react.bridge.ReactMethod; 
import com.facebook.react.common.MapBuilder; 
import com.facebook.react.bridge.UiThreadUtil; 

import java.util.Map; 

/** 
* {@link NativeModule} that allows JS to show an Android Toast. 
*/ 
public class ToastModule extends ReactContextBaseJavaModule { 

    private static final String DURATION_SHORT_KEY = "SHORT"; 
    private static final String DURATION_LONG_KEY = "LONG"; 

    private static final String GRAVITY_TOP_KEY = "TOP"; 
    private static final String GRAVITY_BOTTOM_KEY = "BOTTOM"; 
    private static final String GRAVITY_CENTER = "CENTER"; 

    public ToastModule(ReactApplicationContext reactContext) { 
    super(reactContext); 
    } 

    @Override 
    public String getName() { 
    return "ToastAndroid"; 
    } 

    @Override 
    public Map<String, Object> getConstants() { 
    final Map<String, Object> constants = MapBuilder.newHashMap(); 
    constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT); 
    constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG); 
    constants.put(GRAVITY_TOP_KEY, Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
    constants.put(GRAVITY_BOTTOM_KEY, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); 
    constants.put(GRAVITY_CENTER, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); 
    return constants; 
    } 

    @ReactMethod 
    public void show(final String message, final int duration) { 
    UiThreadUtil.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
     Toast.makeText(getReactApplicationContext(), message, duration).show(); 
     } 
    }); 
    } 

    @ReactMethod 
    public void showWithGravity(final String message, final int duration, final int gravity) { 
    UiThreadUtil.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
     Toast toast = Toast.makeText(getReactApplicationContext()); 

     LinearLayout layout = new LinearLayout(getReactApplicationContext()); 

     layout.setBackgroundColor(Color.parseColor("#FFFFFF")); 

     TextView tv = new TextView(this); 

     tv.setTextColor(Color.RED); 
     tv.setTextSize(14); 
     tv.setGravity(Gravity.CENTER_VERTICAL); 
     tv.setText(message); 

     layout.addView(tv); 

     toast.setView(layout); 
     toast.setDuration(duration); 
     toast.setGravity(gravity, 0, 0); 
     toast.show(); 
     } 
    }); 
    } 
} 

回答

0

的原料溶液,不重建本地ToastModule:把一個方法是這樣一類:

public void showToast(String mex) { 

    Toast toast = Toast.makeText(this, mex, Toast.LENGTH_SHORT); 
    toast.getView().setBackgroundResource(R.drawable.bg_primary_radius); 
    toast.getView().findViewById(android.R.id.message).setBackgroundColor(primaryColor); 

    // make your other customization 

    toast.show(); 
}