0

我在这样的相对布局设置中有一个切换按钮。

<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 那样混乱?我注意到这种行为发生在我程序中的布局应用按钮、切换按钮和编辑文本中。有什么建议吗?

当此布局应用于按钮/切换按钮时,它会发生。这是 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>

任何帮助表示赞赏。

4

2 回答 2

0

每个通用尺寸和密度都涵盖一系列实际屏幕尺寸和密度。例如,两个报告屏幕尺寸正常的设备可能具有实际的屏幕尺寸和纵横比,用手测量时会略有不同。同样,报告 hdpi 屏幕密度的两个设备的实际像素密度可能略有不同。Android 将这些差异抽象为应用程序,因此您可以提供为通用尺寸和密度设计的 UI,并让系统根据需要处理任何最终调整。

访问此以获取更多信息:http: //developer.android.com/guide/practices/screens_support.html

并且您可以为不同的布局使用不同的形状文件:并创建具有 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;

并检查 scale 的值:

0.75 means low density
1.0 means standard (medium) density
1.5 means high (large) density
2.0 means extra high density
于 2013-09-13T04:21:12.347 回答
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>

希望它会有所帮助。

于 2013-09-13T04:27:29.687 回答