动态修改Toast Android的布局

时间:2016-12-07 04:20:27

标签: android android-layout android-studio layout toast

我在Android Studio中创建应用时出错,我自己解释

我为我的吐司创建了一个布局,XML看起来像这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/elemento_correcto_s" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:background="#afff45"
android:weightSum="1">
<ImageView android:layout_height="100dp" android:layout_width="100dp" android:src="@drawable/base" android:padding="5dip" android:id="@+id/ok"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="false">
</ImageView>
<TextView android:layout_height="50dp" android:id="@+id/tv" android:layout_width="match_parent" android:text="¡CORRECTO!" android:textColor="#FFF" android:gravity="center_vertical|center_horizontal"
    android:layout_gravity="center_vertical"
    android:layout_toRightOf="@+id/ok"
    android:layout_marginTop="26dp"
    >
</TextView>

当我给布局充气时它工作正常

LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(
            R.layout.elemento_correcto_s
            , (ViewGroup) findViewById(R.id.elemento_correcto_s));
    this.elementoCorrecto = new Toast(this);
    this.elementoCorrecto.setGravity(Gravity.TOP, 0, 0);
    this.elementoCorrecto.setDuration(Toast.LENGTH_LONG);
    this.elementoCorrecto.setView(layout);
    this.elementoCorrecto.show();

但问题是我想动态更改TextView的文本,我已经尝试过调用TextView并更改文本,但它不起作用,所以我希望你可以帮帮我

这是我的代码

LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(
            R.layout.elemento_correcto_xl
            , (ViewGroup) findViewById(R.id.elemento_correcto_xl));

    TextView tvCombo = (TextView) findViewById(R.id.tv);
    if(combo > 1) {
        tvCombo.setText("¡" + combo + " VECES SEGUIDAS!");
    }
    else
        tvCombo.setText("¡CORRECTO!");

    this.elementoCorrecto = new Toast(this);
    this.elementoCorrecto.setGravity(Gravity.TOP, 0, 0);
    this.elementoCorrecto.setDuration(Toast.LENGTH_LONG);
    this.elementoCorrecto.setView(layout);
    this.elementoCorrecto.show();

2 个答案:

答案 0 :(得分:0)

使用TextView显示祝酒词是否有任何特殊原因?否则,您可以按照以下方法动态显示吐司 -

 String toastText = "";
 if(combo > 1) {
    toastText = "¡" + combo + " VECES SEGUIDAS!";
}
else
    toastText = "¡CORRECTO!";
Toast.makeText(activity, toastText, Toast.LENGTH_SHORT).show();

答案 1 :(得分:0)

您可以使用此方法将字符串传递给show ..

public static void makeToast(Context c, String msgToShow){
    LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v= inflater.inflate(R.layout.view_toast,null); //your layout to show
    TextView text = (TextView) v.findViewById(R.id.textViewToast);
    text.setText(msgToShow);
    Toast toast = new Toast(c);
    toast.setGravity(Gravity.BOTTOM, 10, 25);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(v);
    toast.show();
}

在“活动”中随意调用。