2016-12-14 91 views
1

我想用ImageView和TextView制作AlertDialog。 我写了这个:带有ImageView和TextView的AlertDialog

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 
    <ImageView 
     android:id="@+id/imgCustomToast" 
     android:layout_width="170dp" 
     android:layout_height="220dp" 
     android:background="@drawable/ycp" 
     android:gravity="center_horizontal" 
     android:layout_gravity="center" 
     android:layout_marginRight="10dp" /> 
    <TextView 
     android:id="@+id/txtCustomToast" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="C#" 
     android:gravity="center_horizontal" 
     android:layout_gravity="center" 
     android:textSize="20sp"/> 
</LinearLayout> 

MainActivity:

public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 
     Button button = FindViewById<Button>(Resource.Id.MyButton); 
     button.Click += delegate 
     { 
      AlertDialog.Builder alertadd = new AlertDialog.Builder(this); 
      LayoutInflater factory = LayoutInflater.From(this); 
      View view = factory.Inflate(Resource.Layout.sample, null); 
      alertadd.SetView(view); 
      alertadd.SetPositiveButton("To Close", (senderAlert, args) => 
      { 
       Toast.MakeText(this, "Closed", ToastLength.Short).Show(); 
      }); 
      alertadd.Show(); 
     }; 
    } 
} 

我想在MainActivity改变大小,字体和TextView的文本用:

TextView textView = FindViewById<TextView>(Resource.Id.txtCustomToast); 
    string str = "sample text"; 
    textView.Text = str; 
    Typeface typeP = Typeface.CreateFromAsset(this.Assets, "fonts/BLOTUS.TTF"); 
    textView.SetTypeface(typeP, TypefaceStyle.Normal); 
    textView.SetTextSize(Android.Util.ComplexUnitType.Sp, 18); 

但我看到这个错误:

System.NullReferenceException

如何以编程方式更改textview的大小,字体和文本?

+0

哪行创建此错误消息?它看起来像一个未初始化的对象 –

回答

2

你做错了,您就可以访问TextView以下方式,

改变这一行

TextView textView = FindViewById<TextView>(Resource.Id.txtCustomToast); 

这个

TextView textView = view.FindViewById<TextView>(Resource.Id.txtCustomToast); 
+0

@ user2111639很高兴知道这一点。 – Ironman

1

你需要使用的Alert Dialog实例来找到你的view如下所示。

TextView textView = view.FindViewById<TextView>(Resource.Id.txtCustomToast); 
1
View view = factory.Inflate(Resource.Layout.sample, null); 
    TextView textView = view.findViewById<TextView>(Resource.Id.txtCustomToast); 
    string str = "sample text"; 
    textView.setText(str); 
+0

使用此代码(textView.Text = str;)我可以在输出中看到字符串,但使用textView.setText(str);我看到错误。 – user2111639

0

调用此方法,即显示一个AlertDialogImageViewTextView

private void showDialog(Context context) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(context); 
     builder.setTitle("Title"); 
     builder.setMessage("Message"); 

     LinearLayout linearLayout = new LinearLayout(context); 
     linearLayout.setOrientation(LinearLayout.HORIZONTAL); 
     ImageView imageView = new ImageView(context); 
     TextView textView = new TextView(context); 
     linearLayout.addView(imageView); 
     linearLayout.addView(textView); 

     builder.setCancelable(false); 
     builder.setView(linearLayout); 

     builder.setPositiveButton("OK", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         //ok 
        } 
       }); 


     builder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // negative button logic 
        } 
       }); 

     AlertDialog dialog = builder.create(); 
     // display dialog 
     dialog.show(); 
    } 
相关问题