2011-07-12 73 views
2

我想用頂部的工具欄建立一個ListView活動。此工具欄中最右邊的工具將是水平SlidingDrawer的處理程序,它將在其他工具之上提供滑動的EditText。 首先,我嘗試使用LinearLayout和FrameLayout來實現此功能,但滑塊的大小與可用空間減去工具總寬度一樣多。現在,我已經做了我想要的東西,並與以下佈局的偉大工程:相對佈局,SlidingDrawer和ListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<RelativeLayout android:id="@+id/laytoptoolbarhost" 
    android:layout_width="fill_parent" 
    android:layout_height="55dip" 
    android:background="@drawable/toptoolbar_gradient" 
    android:padding="5dip"> 
    <View android:id="@+id/tool10" 
     android:layout_width="32dip" 
     android:layout_height="32dip" 
     android:paddingRight="3dip" 
     android:background="#00FF00" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true"> 
    </View>  
    <View android:id="@+id/tool20" 
     android:layout_width="32dip" 
     android:layout_height="32dip" 
     android:paddingRight="3dip" 
     android:background="#00FF00" 
     android:layout_toRightOf="@+id/tool10" 
     android:layout_centerVertical="true"> 
    </View> 
    <View android:id="@+id/tool30" 
     android:layout_width="32dip" 
     android:layout_height="32dip" 
     android:paddingRight="3dip" 
     android:background="#00FF00" 
     android:layout_toRightOf="@+id/tool20" 
     android:layout_centerVertical="true"> 
    </View>    
    <SlidingDrawer android:id="@+id/slidesearch" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:handle="@+id/sliderhandle" 
     android:content="@+id/txtsearch"> 
     <ImageView android:id="@+id/sliderhandle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/btn_collapse_states"> 
     </ImageView> 
     <EditText android:id="@+id/txtsearch" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="20sp"> 
     </EditText> 
    </SlidingDrawer> 
</RelativeLayout> 
<ListView android:id="@id/android:list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:drawSelectorOnTop="false"/> 
<TextView android:id="@id/android:empty" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textSize="20sp" 
      android:text="@string/lbl_norecords"/>  

的問題是,我必須把在RelativeLayout的機器人固定值:layout_height參數爲了這個工作。如果我放置「wrap_content」,那麼RelativeLayout會填充整個屏幕,而其他任何內容都不會顯示。

任何幫助高度讚賞

預先感謝您

+0

這很奇怪,我懷疑其中一個孩子的身高正在引發這個問題,但他們都對我很好。有時相對佈局的東西會導致意想不到的後果。你有沒有嘗試過這與一個空的相對佈局(工具欄),或者我猜只是一個孩子,因爲它的高度將爲零,否則 – Idistic

+0

我試過了,並且wrap_content值按預期工作。因此,我將逐個添加一個元素,以查看哪裏出錯。謝謝 – Christos

+0

好的,當我添加SlidingDrawer時,RelativeLayout開始搞亂了。我真的被困在這裏... – Christos

回答

2

從相對佈局中的視圖中刪除android:layout_centerVertical="true"。我還對滑塊進行了一些更改以獲得所需的內容。在滑塊的關鍵變化是:

  1. 地址:android:layout_alignTop="@+id/tool30"android:layout_alignBottom="@+id/tool30"

  2. 刪除android:layout_alignParentRight="true"android:layout_centerVertical="true"

我做了一些其他化妝品的變化別處,而調試的佈局。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <RelativeLayout 
     android:id="@+id/laytoptoolbarhost" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:layout_weight="0"> 
     <View 
      android:id="@+id/tool10" 
      android:layout_width="32dip" 
      android:layout_height="32dip" 
      android:paddingRight="3dip" 
      android:background="#00FF00" 
      android:layout_alignParentLeft="true" 
      > 
     </View> 
     <View 
      android:id="@+id/tool20" 
      android:layout_width="32dip" 
      android:layout_height="32dip" 
      android:paddingRight="3dip" 
      android:background="#FFFF00" 
      android:layout_toRightOf="@+id/tool10" 
      > 
     </View> 
     <View 
      android:id="@+id/tool30" 
      android:layout_width="32dip" 
      android:layout_height="32dip" 
      android:paddingRight="3dip" 
      android:background="#00FFFF" 
      android:layout_toRightOf="@+id/tool20" 
      > 
     </View> 
     <SlidingDrawer 
      android:id="@+id/slidesearch" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:layout_alignTop="@+id/tool30" 
      android:layout_alignBottom="@+id/tool30" 
      android:handle="@+id/sliderhandle" 
      android:content="@+id/txtsearch"> 
      <ImageView 
       android:id="@+id/sliderhandle" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/alarm_clock"> 
      </ImageView> 
      <EditText 
       android:id="@+id/txtsearch" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:textSize="20sp"> 
      </EditText> 
     </SlidingDrawer> 
    </RelativeLayout> 
    <ListView 
     android:id="@id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false" /> 
    <TextView 
     android:id="@id/android:empty" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:textSize="20sp" 
     android:text="nothing" 
     /> 
</LinearLayout> 
+0

你的方法來解決我的問題真的讓我大開眼界。非常感謝您的參與。肯定你是MANdel :-) – Christos

0

嘗試RelativeLayout的一個的LinearLayout圍繞在你會把:
android:layout_width="wrap_content"
android:layout_width="wrap_content

然後從固定量改變的RelativeLayout空間,以fill_parent
你可以做的另一件事是使用Droid Draw這將允許你可視化佈局。

+0

對不起Ephraim,這是行不通的。我得到完全相同的結果... – Christos

+0

最壞的情況下,只需使用droid繪製來佈局它。我將編輯答案發布鏈接。 – Ephraim

0

既然你已經確定,這是你可能會想看看這個討論有任何軸承滑動抽屜式(好像你也許能夠使用信息),如果不是我想

SlidingDrawer height

用這種類型的標準多搜索一下。

+0

要回答您之前關於設置手柄高度(以像素爲單位)的評論,它也不起作用。所以我會嘗試你的答案建議 – Christos