是否可以在LinearLayout中显示与第二个重叠的第一个视图?
我想像我这样布置我的观点:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentRight="true" >
<TextView
android:id="@+id/firstTextView"
android:layout_width="wrap_content"
android:layout_height="wrapContent" />
<TextView
android:id="@+id/secondTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
但是我需要从布局中的第一个视图firstTextView放置在(重叠)secondTextView的顶部。这可能吗?我正在使用LinearLayout,因为我也在使用边距来获得重叠效果。
答案 0 :(得分:5)
对我有用并可能对你有用的是:
所以布局可以是这样的:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:clipChildren="false">
<TextView
android:id="@+id/firstTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00000000"
android:text="First View" />
<TextView
android:id="@+id/secondTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/firstTextView"
android:background="#00000000"
android:layout_marginTop="-13dp"
android:text="Second View"/>
</RelativeLayout>
和
TextView firstTextView = (TextView)findViewById(R.id.firstTextView);
firstTextView.bringToFront();
答案 1 :(得分:4)
如果你想要的是垂直重叠两个视图,那么使用这个XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/firstTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00000000"
android:text="First View" />
<TextView
android:id="@+id/secondTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00000000"
android:layout_marginTop="-13dp"
android:text="Second View"/>
</LinearLayout>
答案 2 :(得分:2)
或者你可以坚持使用线性布局,但在孩子身上放置一个RelativeLayout。您可以将TextViews与RelativeLayout放在一起,这样它们就可以从RelativeLayout中获取属性。然后,您仍然可以将LinearLayout用于其他视图。 http://developer.android.com/reference/android/widget/RelativeLayout.html
答案 3 :(得分:0)
通过指定边距值“&lt; 0”,我们可以重叠视图。但是当我们需要o重叠视图时,相对布局是可取的。
答案 4 :(得分:0)
我知道这是一个老问题,但是如果有人像我今天一样再次寻找这个问题-我有一个动态构建布局,所以我实际上没有特定的xml,而是想在ontop上添加一个单独的视图我的堆栈取决于某些设置; @GabeSechan的注释使我朝着正确的方向前进,我使用-bottom margin来使第二个视图向上,将新视图插入位置0
LinearLayout stack = (LinearLayout) findViewById(R.id.mystackview);//get your stack
stack.addView(getView(count), 0); //place it at the top
public View getView(){
TextView view = menuLayout.findViewById(R.id.myview);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(size, size);
layoutParams.setMargins(0, 0, 0, -size));//this pulls the view back up to overlap evenly
layoutParams.setMarginEnd(0);
layoutParams.setMarginStart(size);
if (view.getParent() != null)
((ViewGroup) view.getParent()).removeView(view);
view.setLayoutParams(layoutParams);
view.setZ(1);//this then sets the zindex above the other layout and hey presto, almost a simple css style fix
return view;
}