por*_*der 0 android dialog android-custom-view
我从图像和其他一些视图创建了一个自定义对话框(不,这不是对话框对象)。我与此自定义对话框(再次是布局)的冲突在于它周围的区域关闭了自定义对话框。有没有办法使外部区域不可点击?
我尝试用全屏frameLayout和透明背景包装对话框视图,然后以编程方式将frame属性设置为setClickable(false)。
framelayout.setClickable(false);
Run Code Online (Sandbox Code Playgroud)
这什么也没做。它仍然关闭对话框。还有其他建议吗?先感谢您。
这是我的代码:
//used to disable background from closing the custom dialog
private FrameLayout fl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout_dialog);
btnContinue = (Button) findViewById(R.id.btnContinue);
btnContinue.setOnClickListener(this);
fl.setClickable(false); //background suppose to lock
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnContinue:
finish();
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我也有另一个广播类
public class DialogManagerBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(IdeaPlayInterfaceApplication.isActivityVisible()){
Intent i=new Intent(context,CustomDialogActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,在特定的实例上不会调用此自定义对话框,无论我在应用程序中做什么,都将在每个设定的时间调用它。
我使用Intent和PendingIntent随时间反复调用此自定义对话框。用这样的东西:
cancelAlarmNotificationMonitoring(context);
Calendar calendar = Calendar.getInstance();
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pintent = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis()+ALARM_INTERVAL,ALARM_INTERVAL, pintent);
Run Code Online (Sandbox Code Playgroud)
编辑:根据您的要求,这是布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/custom_background"
android:gravity="center"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/fl1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:orientation="vertical"
android:background="@drawable/bkg_img"
android:padding="10dp" >
<ImageView
android:id="@+id/bg1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@drawable/img_icon"
android:padding="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="20dp"
android:text="@string/text"
android:textColor="@color/white"
android:textSize="35sp"/>
<Button
android:id="@+id/btnContinue"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@drawable/custom_btn"
android:clickable="true"
android:text="@string/btn_continue_no_arrow"
android:textColor="@color/white"
android:textSize="@dimen/font_size_18"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
希望现在更加清楚。
您可以使用对话框对象来配置它setCanceledOnTouchOutside
,并将其设置为false,以禁用在单击超出其边界时被取消的对话框。
样品:
dialog.setCanceledOnTouchOutside(false); // will disable dialog outside touch
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1111 次 |
最近记录: |