我的屏幕上有一些彈出窗口,需要的東西不那麼常見。查看另一個視圖
我將帶有Header + Content + Footer的彈出窗口布局爲LinearLayout。但我需要一個小箭頭才能顯示在我的組件上。
當彈出窗口位於錨點上方並且箭頭向下時,我使用下面的代碼來繪製它。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content" android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:id="@+id/header" android:background="@drawable/background_header"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
<HorizontalScrollView android:background="@drawable/background"
android:layout_width="wrap_content" android:layout_height="match_parent"
android:scrollbars="none">
</HorizontalScrollView>
<ImageView android:id="@+id/arrow_down" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginTop="-3dip"
android:src="@drawable/quickcontact_arrow_down" />
</LinearLayout>
在運行時,我能夠把箭頭正好與下面的代碼錨以上。
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) mArrowDown
.getLayoutParams();
param.leftMargin = root.getMeasuredWidth()
- (screenWidth - anchor.getLeft());
它顯示正確。
現在我需要做同樣的事情,但箭頭需要顯示在上方。 我的問題是箭頭需要在另一個視圖上重疊一點(導致背景色匹配它們),所以這就是爲什麼它需要在後面繪製。
我試着用FrameLayout讓「內容」有一些topMargin,但它不工作。
我知道這可以用AbsoluteLayout來完成,但我不惜一切代價避免它。
編輯:
以下Josh答案,我寫了下面的代碼。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:id="@+id/content"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:fadingEdgeLength="0dip">
<RelativeLayout android:id="@+id/header"
android:background="@drawable/background_header" android:orientation="horizontal"
android:layout_width="match_parent" android:layout_height="wrap_content">
</RelativeLayout>
<HorizontalScrollView android:background="@drawable/background"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:scrollbars="none">
</HorizontalScrollView>
</LinearLayout>
<ImageView android:id="@+id/arrow_up" android:layout_above="@id/content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/quickcontact_arrow_up" />
</RelativeLayout>
但我不知道爲什麼,箭頭現在不顯示。
我知道,這是一個很強烈的代碼。我要測試你的解決方案。 – 2011-05-02 15:40:47
指出@Josh,我同意你的看法,'RelativeLayout'肯定能解決問題。 +1爲緊湊desc。的解決方案。 – rekaszeru 2011-05-02 15:47:35
好吧,我試着按照你的解決方案,但箭頭現在不出現。我添加了代碼,我在我的問題上嘗試。 – 2011-05-02 15:57:02