我正在嘗試在我的應用程式的自定義警報對話框中顯示資料表。
我的自定義警報 xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*">
<!--Only this row shows in my dialog box-->
<TableRow
android:padding="5dp">
<TextView
android:padding="5dp"
android:text="Page"/>
<TextView
android:padding="5dp"
android:text="ENo"/>
<TextView
android:padding="5dp"
android:text="QNo"/>
<TextView
android:padding="5dp"
android:text="P_date"/>
<TextView
android:padding="5dp"
android:text="P_read"/>
<TextView
android:padding="5dp"
android:text="C_read"/>
</TableRow>
<!--This row does not show-->
<TableRow>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@ id/meter_details"
android:stretchColumns="*">
</TableLayout>
</ScrollView>
</TableRow>
</TableLayout>
我填充子表的java代碼(id:meter_details):
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
AlertDialog ad;
builder.setIcon(R.drawable.ic_power);
builder.setView(R.layout.meter_entry_dialog);
builder.setTitle("Meter entry");
builder.setMessage("Please enter the details");
Context dialogContext = builder.getContext();
LayoutInflater inflater = LayoutInflater.from(dialogContext);
View dialogView = inflater.inflate(R.layout.meter_entry_dialog, null);
TableLayout tbl = dialogView.findViewById(R.id.meter_details);
for(int i=0;i<arr.size();i ){
TableRow row = new TableRow(getContext());
row.setBackground(getResources().getDrawable(R.drawable.border));
TextView pg = new TextView(getContext());
TextView empno = new TextView(getContext());
TextView qtrno = new TextView(getContext());
TextView prev_date = new TextView(getContext());
EditText prev_read = new EditText(getContext());
EditText curr_read = new EditText(getContext());
try {
pg.setText(arr.get(i).get(7).toString());
empno.setText(arr.get(i).get(1).toString());
qtrno.setText(arr.get(i).get(2).toString());
prev_date.setText(arr.get(i).get(5).toString());
prev_read.setText(arr.get(i).get(4).toString());
row.addView(pg);
row.addView(empno);
row.addView(qtrno);
row.addView(prev_date);
row.addView(prev_read);
row.addView(curr_read);
tbl.addView(row);
} catch (JSONException e) {
e.printStackTrace();
}
}
builder.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.setCancelable(false);
ad = builder.create();
ad.show();
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.copyFrom(ad.getWindow().getAttributes());
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
ad.getWindow().setAttributes(layoutParams);
只有我的父表格布局的第一行顯示在我的alertdialog. 我的其余資料(我從陣列中獲取并動態創建表行并存盤它們)沒有顯示。
我不知道為什么會這樣。我什至檢查了我的arr,它具有所需的所有值。請幫我
uj5u.com熱心網友回復:
您應該將充氣設定dialogView為對話框的視圖。
將此行更改builder.setView(R.layout.meter_entry_dialog);為并在' 初始化builder.setView(dialogView);后將其移動。
此外,您可以使用 布局充氣器的方法。dialogViewgetContext()
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
AlertDialog ad;
builder.setIcon(R.drawable.ic_power);
builder.setTitle("Meter entry");
builder.setMessage("Please enter the details");
LayoutInflater inflater = LayoutInflater.from(getContext());
View dialogView = inflater.inflate(R.layout.meter_entry_dialog, null);
builder.setView(dialogView);
TableLayout tbl = dialogView.findViewById(R.id.meter_details);
...
uj5u.com熱心網友回復:
我認為您應該為 ScrollView 設定固定高度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/454101.html
下一篇:java.lang.NoSuchMethodError:javax.servlet.ServletContext.setSessionTimeout(I)V
