我在这样的relativelayout设置中有一个togglebutton。
<RelativeLayout
android:id="@+id/myBack"
android:layout_width="fill_parent"
android:layout_height="906dp"
android:background="@drawable/main" >
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="31dp"
android:background="@drawable/send_toggleLayout"
android:checked="true"
android:text="ToggleButton" />
</RelativeLayout>
无论如何我可以处理这个,所以2.3和4.2有类似或至少没有像2.3一样搞砸了?我注意到在我的程序中布局应用按钮,togglebuttons和edittexts中发生了这种行为。有什么建议吗?
当此布局应用于按钮/ togglebuttons时,会发生这种情况。这是send_toggleLayout xml文件的样子示例:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"
android:state_pressed="true">
<shape android:padding="10dp" android:shape="rectangle">
<gradient android:startColor="@color/toggleDark" android:endColor="@color/toggleLight" android:angle="90"/>
<stroke android:width="2dp" android:color="#FFFFFF" />
<corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" />
</shape>
</item>
感谢任何帮助。
答案 0 :(得分:0)
每个通用尺寸和密度涵盖一系列实际屏幕尺寸和密度。例如,两个报告正常屏幕尺寸的设备可能具有实际屏幕尺寸和纵横比,当手动测量时,这些尺寸和纵横比略有不同。类似地,报告屏幕密度为hdpi的两个设备可能具有稍微不同的实际像素密度。 Android将这些差异抽象为应用程序,因此您可以提供针对通用大小和密度设计的UI,并让系统根据需要处理任何最终调整。
访问此以获取更多信息: http://developer.android.com/guide/practices/screens_support.html
您可以将diffenet形状文件用于不同的布局: 并创建半径为2或3的形状文件
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"
android:state_pressed="true">
<shape android:padding="10dp" android:shape="rectangle">
<gradient android:startColor="@color/toggleDark" android:endColor="@color/toggleLight" android:angle="90"/>
<stroke android:width="2dp" android:color="#FFFFFF" />
<corners android:bottomLeftRadius="3dp" android:bottomRightRadius="3dp" android:topLeftRadius="3dp" android:topRightRadius="3dp" />
</shape>
</item>
</selector>
我改变了角落的半径,使其在2.3上看起来很完美 android设备根据密度知道应该加载哪个布局。 因此,为不同的布局创建不同的形状文件。 使用不同的模拟器来查看输出。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
或使用它来了解您正在使用的设备: 执行以下代码:
float scale = getApplicationContext().getResources().getDisplayMetrics().density;
并检查比例值:
0.75 means low density
1.0 means standard (medium) density
1.5 means high (large) density
2.0 means extra high density
答案 1 :(得分:0)
试试这个:
<RelativeLayout
android:id="@+id/myBack"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Turn on/off alerts"
android:layout_centerVertical="true"
/>
<ToggleButton
android:layout_alignParentRight="true"
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="ToggleButton"
/>
</RelativeLayout>
希望它会有所帮助。