我正在创建一个应用程序,其中有一个选择时间(以小时和分钟为单位)的功能。为此,我创建了两个列表视图,一个用于选择小时,另一个用于选择分钟。两个listviews都应该有七个项目可见。然后有两个文本视图应该与第四个项目的底部对齐。你可以看到截图,以便更好地理解它。
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>
和listview行的代码:
<?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>
是否可以为所有差异动态管理它。屏幕尺寸和分辨率?如果是,我怎么能实现这一目标?
答案 0 :(得分:3)
1)再添加两个自定义列表视图,一个用于hrs,另一个用于min 2)使用此代码禁用这两个列表视图的滚动
在CustomListView中:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
if(ev.getAction()==MotionEvent.ACTION_MOVE)
return true;
return super.dispatchTouchEvent(ev);
}
然后ListView会对点击作出反应,但不会改变滚动位置。
3)并使用相同的逻辑来显示用于白色的hrs和min