我使用了FrameLayout,其中我使用了两个LinearLayouts。 第二个最初是不可见的,但是当我按下布局1上的按钮时,第二个布局变得可见并且与第一个布局重叠。 我想要的是当我的第二个布局出现时,第一个布局的元素不应该是可点击的(或启用的)。 为此,我尝试了setEnabled(false)和setClickable(false),但这两个都不起作用我没有得到什么问题。
代码如下TableLayout table; EditText edit; ScrollView scroll; Button btn_save; Button btn_layer_save; Button btn_cross; AlertDialog alert_dialog; LinearLayout layout_above; int primary_selected; RadioButton radio_geo; RadioButton radio_alumni; String geo = "no" ; String alumni = "no" ; int color; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); table = (TableLayout) findViewById(R.id.tableLayout1); edit = (EditText) findViewById(R.id.message_select_friends_edit_search); search_geo_name_list = new ArrayList(); search_id_list = new ArrayList(); scroll = (ScrollView) findViewById(R.id.register_scroll_view); btn_cross = (Button) findViewById(R.id.register_cross); btn_save = (Button) findViewById(R.id.register_save); btn_layer_save = (Button) findViewById(R.id.register_layer_save); btn_cross.setOnClickListener(this); btn_save.setOnClickListener(this); btn_layer_save.setOnClickListener(this); layout_above = (LinearLayout) findViewById(R.id.regsiter_layout_layer_above); createTableRows(name_list,id_list); } void createTableRows(ArrayList list_name , ArrayList list_id ) { /*-----ROWSOFTABLECREATEDDYN AMICALLY ------*/ } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.register_save: layout_above.setVisibility(LinearLayout.VISIBLE); btn_save.setVisibility(LinearLayout.INVISIBLE); scroll.setEnabled(false); edit.setEnabled(false); edit.setClickable(false); scroll.setClickable(false); break; case R.id.register_cross: Toast.makeText(this, "Cross Cancel", 1000).show(); Intent intent = new Intent(this, TestSave.class); startActivity(intent); finish(); break; case R.id.register_layer_save: selectedInfo(); break; } }`
将前布局的大小作为背景布局的大小,并将前布局的背景颜色设置为透明,因此背景布局是部分的
可见。 并将onClickListener设置为front layout,而onClick方法则不执行任何操作。
这个答案并不完全符合您的要求,但它是一个很好的选择。
希望能帮助到你
尝试使用setFocusable(False); 可能这应该对你有帮助
尝试与孩子一起工作而不是布局本身
LinearLayout l=(LinearLayout) findViewById(R.layout.layout2); int num=l.getChildCount(); for(int i=0;i
你可以使用递归来递归地禁用所有孩子的可点击属性 –
public static void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) { int childCount = viewGroup.getChildCount(); for (int i = 0; i < childCount; i++) { View view = viewGroup.getChildAt(i); view.setEnabled(enabled); if (view instanceof ViewGroup) { enableDisableViewGroup((ViewGroup) view, enabled); } else if (view instanceof ListView) { view.setEnabled(enabled); ListView listView = (ListView) view; int listChildCount = listView.getChildCount(); for (int j = 0; j < listChildCount; j++) { listView.getChildAt(j).setEnabled(enabled); } } } }