繁体   English   中英

按钮在不同的Android设备或版本上看起来有所不同

[英]button looks different on different android devices or versions

我有两个简单的按钮,想给他们一个自定义的外观,所以我只是给按钮提供了背景色。 这在运行4.2的Htc One上看起来不错,但是当我在旧的Lg P925上测试它时,按钮的高度刚好包裹了它的内容(就像默认的填充消失了一样)。

像这样:

在此处输入图片说明

因此,我做了一些进一步的研究,发现我必须使用状态列表绘制功能才能向按钮添加功能。

所以我这样做是这样的:

Button.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />

 </selector>

按钮集中

    <shape xmlns:android="http://schemas.android.com/apk/res/android"   
    android:shape="rectangle">
    <solid android:color="@color/greybutton"/>
    <corners android:radius="0dp" />
    <stroke android:color="@color/greybutton" android:width="2dp" />
    <padding android:top="5dp" android:bottom="5dp"             
    android:left="10dp"android:right="10dp" />
    </shape>

按下按钮

    <shape xmlns:android="http://schemas.android.com/apk/res/android"      
    android:shape="rectangle">
    <solid android:color="@color/greybutton"/>
    <corners android:radius="0dp" />
    <stroke android:color="@color/greybutton" android:width="2dp" />
    <padding android:top="5dp" android:bottom="5dp" android:left="10dp"     
    android:right="10dp" />
    </shape>  

按键正常

    <shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFFFF" android:endColor="#A4A4A4"  
    android:angle="270" />
    <solid android:color="@color/darkerGrey"/>
    <corners android:radius="0dp" />
    <padding android:top="5dp" android:bottom="5dp" android:left="10dp"   
    android:right="10dp"/>
    </shape>

样式

  <style name="button" parent="@android:style/Widget.Button">
  <item name="android:background">@drawable/button</item>
  </style>

然后我将样式添加到按钮:

           <Button
            android:id="@+id/SignUpBtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:text="@string/CreateAcct"
            android:textColor="@color/white"
            style="@style/button"
            android:textSize="17sp"
             />

这就是我得到的:

在我的HTC上(运行4.2)

这里的按钮更大,因为它在按钮的默认系统填充中添加了5dp顶部和底部填充(来自我的state drawables xml)。

在运行于2.3的Lg P925上,我得到以下信息:

在此处输入图片说明

按钮比我的htc上的按钮小。 看来,当我向按钮添加背景时,它将摆脱默认的填充。 我只是不知道

如何创建在所有设备上看起来都一样的按钮?

*文本字体因设备而异,因此请使用字体类设置按钮的字体*

像这样

在Assets文件夹中创建文件夹字体,然后粘贴abc.ttf文件。 基本上.ttf文件是包含免费字体的文件

Button txt = (Button) findViewById(R.id.custom_font);  
Typeface font = Typeface.createFromAsset(getAssets(), "abc.TTF");  
txt.setTypeface(font);

或者你可以使用这样的使用Android的预定义字体

<Button 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:typeface="sans"/>

sans,monospace,serif是预定义的字体

享受编码

它会工作

我相信关键是这样的声明:

<style name="button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/button</item>

</style>

请注意,您正在扩展父样式,该样式可能会因Android版本等而异。请在没有父样式的情况下进行尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM