Android视图无法在不同大小的设备上进行缩放

时间:2012-04-13 12:42:32

标签: android view scale density-independent-pixel

我正在使用eclipse我有图像和按钮的视图,其宽度和高度设置为dp:

<Button
    android:id="@+id/btn_menu_games"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:layout_gravity="center"
    android:background="@drawable/ico_games"
    android:onClick="goToGames" />

但是当我使用不同的设备时,图像和按钮不会相对于屏幕缩放,因此它们在小屏幕上非常大,在大屏幕上非常小。我在视图中做错了吗?我需要在Manifest中设置任何内容吗?

感谢。

完整代码:

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg_portrait"
    android:gravity="center_horizontal"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="234dp"
        android:layout_height="156dp"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/flag" />


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginRight="20dp" >




                <Button
                    android:id="@+id/btn_menu_games"
                    android:layout_width="70dp"
                    android:layout_height="70dp"
                    android:layout_gravity="center"
                    android:background="@drawable/ico_games"
                    android:onClick="goToGames" />




        <com.academyGeneric.MyTextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textColor="#8c0101"
            android:text="Games"
            android:layout_marginBottom="5dp"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <Button
            android:id="@+id/btn_menu_lessons"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:background="@drawable/ico_lessons" />


       <com.academyGeneric.MyTextView
           android:id="@+id/textView2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:text="Lessons"
           android:layout_marginBottom="5dp"
           android:textColor="#8c0101"
           android:textAppearance="?android:attr/textAppearanceLarge" />


          <Button
              android:id="@+id/btn_menu_settings"
              android:layout_width="70dp"
              android:layout_height="70dp"
              android:layout_gravity="center"
              android:background="@drawable/ico_settings"
              android:onClick="goToSettings" />

        <com.academyGeneric.MyTextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Settings"
            android:textColor="#8c0101"
            android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>


<LinearLayout
     android:id="@+id/linearLayout2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical"
     android:layout_marginLeft="20dp" >



            <Button
                android:id="@+id/btn_menu_dictionary"
                android:layout_width="70dp"
                android:layout_height="70dp"
                android:layout_gravity="center"
                android:background="@drawable/ico_dictionary"
                android:onClick="goToDictionary" />


        <com.academyGeneric.MyTextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Dictionary"
            android:layout_marginBottom="5dp"
            android:textColor="#8c0101"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <Button
            android:id="@+id/btn_menu_statistics"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:background="@drawable/ico_stats" />

        <com.academyGeneric.MyTextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Statistics"
        android:layout_marginBottom="5dp"
        android:textColor="#8c0101"
        android:textAppearance="?android:attr/textAppearanceLarge"
         />


        <Button
            android:id="@+id/close"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:background="@drawable/ico_exit"
            android:onClick="exit" />

        <com.academyGeneric.MyTextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Exit"
        android:textColor="#8c0101"
        android:textAppearance="?android:attr/textAppearanceLarge"
         />

        </LinearLayout>            

    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

如果你真的需要它具有一定的宽高比,你一定要考虑使用权重。

如果线性布局父级中有两个按钮,且权重为1,则它们都将占用
屏幕宽度的1/2是

按钮相对于屏幕的比例=(view_weight /(所有视图的total_weights)

看看这里:http://blog.stylingandroid.com/archives/297

否则,DP是正确的。