2014-10-29 90 views
1

我正在創建一個應用程序,其中有一個選擇時間(小時和分鐘)的功能。爲此,我創建了兩個列表視圖,一個用於選擇小時,另一個用於選擇分鐘。這兩個列表視圖應該有七個可見的項目。然後有兩個文本視圖應該與第4項的底部對齊。你可以看到截圖以更好地理解它。將列表視圖與佈局的其他元素對齊

screenshot

的UI看起來應該像圖像。但問題是,對齊方式隨不同的屏幕分辨率而變化。我試圖爲不同的dpis(hdpi,mdpi,xhdpi,xxhdpi)設置不同的邊距和尺寸。但是,仍然對於某些設備(例如S4),視圖不對齊,列表視圖顯示第8項的頂部。我使用diff測試了模擬器上的應用程序。決議和它在那裏工作得很好。

在XML佈局文件中的代碼:

<RelativeLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:visibility="visible"> 

    <ListView 
     android:id="@+id/hourList" 
     android:layout_width="@dimen/timerListViewWidth" 
     android:layout_height="match_parent" 
     android:paddingBottom="63dp" 
     android:background="@null" 
     android:scrollbars="none" 
     android:divider="@null" 
     android:layout_centerVertical="true" 
     android:dividerHeight="0dp" > 
    </ListView> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="hrs" 
     android:textColor="@color/white" 
     android:paddingBottom="@dimen/bottomPaddingListPostFix" <!-- diff. for diff. dpis--> 
     android:layout_toRightOf="@+id/hourList" 
     android:layout_centerVertical="true" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <ListView 
     android:id="@+id/minList" 
     android:layout_width="@dimen/timerListViewWidth" 
     android:layout_height="match_parent" 
     android:paddingBottom="63dp" 
     android:background="@null" 
     android:layout_toRightOf="@+id/textView7" 
     android:layout_marginLeft="10dp" 
     android:scrollbars="none" 
     android:layout_centerVertical="true" 
     android:divider="@null" 
     android:dividerHeight="0dp" > 
    </ListView> 

    <TextView 
     android:id="@+id/textView8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="min" 
     android:textColor="@color/white" 
     android:paddingBottom="@dimen/bottomPaddingListPostFix" <!-- diff. for diff. dpis--> 
     android:layout_toRightOf="@+id/minList" 
     android:layout_centerVertical="true" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 


</RelativeLayout> 

和列表視圖行的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@null" 
    android:orientation="vertical" 
    android:duplicateParentState="true" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:background="@null" 
    android:gravity="center_horizontal" 
    android:text="24" 
    android:textColor="@drawable/row_selector" 
    android:duplicateParentState="true" 
    android:textSize="@dimen/timerListViewItemTextSize" /> <!-- diff. for diff. dpis--> 

</LinearLayout> 

是否可以動態地管理這個對所有差異。屏幕尺寸和分辨率?如果是的話,我怎麼能做到這一點?

回答

3

1)使用此代碼

添加兩個自定義列表視圖,一個用於小時,一個用於分 2)禁用滾動爲這兩個列表視圖在你CustomListView:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
    if(ev.getAction()==MotionEvent.ACTION_MOVE) 
     return true; 
    return super.dispatchTouchEvent(ev); 
} 

然後ListView中會發生反應點擊,但不會改變滾動位置。

3)和使用相同的邏輯來顯示小時和分鐘,因爲您用於白色

+0

夥計們標記正確的答案。因此,直接參考和實施對其他人有幫助。 – 2014-12-22 05:16:31

+1

謝謝Darshil。我創建了hrs和mins的列表視圖,行高與listview中的數字相同。但是,沒有必要禁用滾動功能,因爲我創建了只有4個項目的列表視圖,因此最後一個項目是標題'hrs'或'mins'。 對不起,標記你的答案是正確的。 – 2015-04-01 22:59:46

相關問題