2016-12-14 86 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(); 
    } 
相關問題