我使用了FrameLayout,其中我使用了两个LinearLayout。第二个最初是不可见的,但是当我按下布局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<String>();
search_id_list = new ArrayList<String>();
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<String> list_name , ArrayList<String> list_id )
{
/*-----R O W S O F T A B L E C R E A T E D D Y N A M I C A L L Y ------*/
}
@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;
}
}`
答案 0 :(得分:8)
将前布局的大小作为背景布局的大小并设置为正面 布局的背景颜色透明,所以背景布局部分为 可见。 并将onClickListener设置为front layout,而onClick方法则不执行任何操作。
这个答案并不完全符合您的要求,但它是一个不错的选择。
希望有所帮助
答案 1 :(得分:3)
尝试使用setFocusable(False);可能这应该可以帮到你
答案 2 :(得分:0)
尝试与孩子一起工作而不是布局本身
LinearLayout l=(LinearLayout) findViewById(R.layout.layout2);
int num=l.getChildCount();
for(int i=0;i<l.getChildAt(0);i++)
if(l.getChildAt(i).isClickable()||l.getChildAt(i).isEnabled())
{
l.getChildAt(i).setClickable(false);
l.getChildAt(i).setEnabled(false);
}
答案 3 :(得分:0)
您可以为此使用递归,并递归地禁用所有孩子的可点击属性 -
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);
}
}
}
}