Android 为什么bringToFront只工作一次
bringToFront只工作过一次,之后就不再工作了。为什么? 当您单击一次时,它会将该视图带到前面,但当您尝试返回该视图时,它将不再工作。触摸/点击操作始终正常Android 为什么bringToFront只工作一次,android,android-layout,android-view,Android,Android Layout,Android View,bringToFront只工作过一次,之后就不再工作了。为什么? 当您单击一次时,它会将该视图带到前面,但当您尝试返回该视图时,它将不再工作。触摸/点击操作始终正常 View view1,view2,view3,view4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a
View view1,view2,view3,view4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//sets the Bundle
//code to initiate and putting the views in layout
view1= findViewById(R.id.button1);
view2= findViewById(R.id.button2);
view1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("onClick","1");
view1.bringToFront();
view1.invalidate();
view2.invalidate();
}
});
view2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("onClick","2");
view2.bringToFront();
view1.invalidate();
view2.invalidate();
}
});
}
这是xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="30dp"
android:text="Button2ButtonButton"
android:textColor="#00ff00"
android:textSize="60dp" />
<TextView
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="170dp"
android:text="Button1ButtonButton"
android:textColor="#ff0000"
android:textSize="60dp" />
</RelativeLayout>
我想我解决了。我必须将所有内容都放在一个层中,并使其无效。为了完成这项工作,您必须将视图放在其他视图之上
像
公共类MainActivity扩展了活动{
RelativeLayout rl1,rl2;
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//rl1=(RelativeLayout)findViewById(R.id.rl1);
//rl2=(RelativeLayout)findViewById(R.id.rl2);
b1=(Button)findViewById(R.id.b1);
b2=(Button)findViewById(R.id.b2);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
b2.bringToFront();
b1.invalidate();
b2.invalidate();
Toast.makeText(getApplicationContext(),"b1",1).show();
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
b1.bringToFront();
b1.invalidate();
b2.invalidate();
Toast.makeText(getApplicationContext(),"b2",1).show();
}
});
}
xml是
<RelativeLayout
android:id="@+id/rl1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
android:layout_alignParentLeft="true"
/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Button2" />
</RelativeLayout>
其中两个按钮都是一个接一个的,当你点击一次,它会给出相关的祝酒词,第二次点击会给出第二个祝酒词,依此类推……我发现invalidate就足够了,可以放在前面(API 17有时不带,API 15每次都可以)我已经能够对它进行排序了
if (android.os.Build.VERSION.SDK_INT >= 21) //Lollipop
{
view.setZ(2);
for (int i = 0; i < view.getParent().getChildCount(); i++)
{
if(view != view.getParent().getChildAt(i))
{
view.getParent().getChildAt(i).SetZ(1);
}
}
}
view.bringToFront();
for (int i = 0; i < view.getParent().getChildCount(); i++)
{
view.getParent().getChildAt(i).invalidate();
}
view.getParent().requestLayout();
view.getParent().invalidate();
if(android.os.Build.VERSION.SDK\u INT>=21)//棒棒糖
{
视图。setZ(2);
对于(int i=0;i
您想做什么?单击一个按钮时隐藏另一个按钮?这只是一个测试,不起作用。我想我解决了。我必须将所有内容都放在一个层中,并使其无效。请在您的答案中添加更多详细信息,以便将来成员可以阅读并获得准确的修复。您的意思是将这两个按钮放在另一个嵌套相对层中美国犹他州?