bringToFront工作一次,然后它就不再起作用了。为什么? 当您单击一次它将该视图置于前面但当您尝试恢复视图时它不再有效。触摸/点击始终正常。
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>
答案 0 :(得分:2)
我想我已经解决了。我必须将所有内容都放在一个图层中,并使其无效。
答案 1 :(得分:0)
你必须把意见放在其他人的头顶才能得到这个工作..
像..
公共类MainActivity扩展了Activity {
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>
其中两个按钮是一个在另一个上,当你点击一次然后它将给出相关的吐司,然后第二次点击给出第二个吐司等等......
答案 2 :(得分:0)
我发现无效就足以带到前面(API 17有时不带,API 15每次都可以)
答案 3 :(得分:0)
我已经能够对此进行排序
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();