我正在尝试创建Alertdialog,并以编程方式向其添加3个togglebuttons图像。
我尝试从一个togglebutton开始,由于某种原因警报对话框非常小(仅在图像周围),按钮本身看起来很奇怪(图像大于按钮)..
这是我的代码,发现有什么问题吗?
LinearLayout ll = new LinearLayout(mActivity);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ToggleButton tb;
for(int i=0;i<cards.size();i++){
Card card = cards.get(i);
tb = new ToggleButton(mActivity);
tb.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
tb.setButtonDrawable(card.getDrawable(mActivity));
ll.addView(tb);
}
AlertDialog.Builder builder;
AlertDialog alertDialog;
builder = new AlertDialog.Builder(mActivity);
builder.setView(ll);
alertDialog = builder.create();
alertDialog.show();
答案 0 :(得分:1)
我发现有时使用Dialog或AlertDialog,即使您将FILL_PARENT设置为根布局,对话框也不会填满屏幕。它的行为实际上就像WRAP_CONTENT。
所以我最终在大部分时间都设置了固定的对话框宽度。
尝试将root linearlayout设置为固定宽度:
ll.setLayoutParams(new LayoutParams(280 * scalingFactor, LayoutParams.FILL_PARENT));
其中scalingFactor是屏幕密度(1表示mdpi,1.5表示hdpi等)。
但是,我建议在警报对话框中使用XML布局。更容易看到Designer中的样子而不是代码中的样子。例如让我们调用这个布局文件my_toggle_button.xml:
<LinearLayout android:layout_width="280dp" android:layout_height="wrap_content"
android:orientation="vertical">
<ToggleButton android:background="@drawable/customToggleButton" />
<ToggleButton android:background="@drawable/customToggleButton" />
<ToggleButton android:background="@drawable/customToggleButton" />
</LinearLayout>
然后定义ToggleButton在customToggleButton.xml drawable中的显示方式
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/toggleButtonUnchecked" />
<item android:state_checked="true" android:drawable="@drawable/toggleButtonChecked" />
</selector>
您需要提供两个PNG toggleButtonUnchecked.png和toggleButtonChecked.png。
在你的代码中,不是构建控件,只需将R.layout.my_toggle_button膨胀到视图中并在其上调用AlertDialog的setView。