如何针对不同的屏幕尺寸使用不同的操作栏尺寸?

时间:2015-09-26 03:51:16

标签: java android android-layout android-actionbar

如何定义“当动作条为600dp时使用此大小,当另一个为720 dp时”。这也会调整图标大小吗?

2 个答案:

答案 0 :(得分:1)

要为不同的屏幕尺寸自定义操作栏的大小,您需要在styles.xml文件夹中创建values的多个副本。然后,自定义主题声明标记下的操作栏的大小。就像你想将Action Bar大小设置为600dp一样,这样做:

<style name="AppTheme" parent="Theme.AppCompat.Light">

    <item name="android:actionBarSize">600dp</item>

</style>

通过这种方式,您可以针对不同的屏幕尺寸使用不同的操作栏尺寸。你可以随心所欲地拥有它们。

希望这有帮助。

答案 1 :(得分:-1)

编辑:

要更好地控制操作栏,您必须使用新工具栏替换操作栏。

Toolbar

中设置res/layout/my_layout.xml
<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:background="?attr/colorPrimary" /> 

再次在您的res/layout-large-land/my_layout.xmlres/layout-large/my_layout.xml

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="200dp" //different height because for layout-large-land
    android:layout_width="match_parent"
    android:background="?attr/colorPrimary" /> 

然后在您的活动中onCreate()

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar); 
}

setSupportActionBar(toolbar);会将ActionBar替换为Toolbar!现在,您可以在不同的xml中使用不同的属性

另外,请确保您应用于活动的主题具有NoActionBar属性

<style name="Theme.MyTheme" parent="Theme.AppCompat.NoActionBar">

添加更多..您可以从官方博客文章中了解有关android-design-support-library的更多信息。

OLD:

支持不同设备的Android文档是适当的方法!您可以从supporting-devicestablets-and-handsets

中仔细阅读

特别针对supporting different screen sizes

要优化不同屏幕尺寸的用户体验,您应为要支持的每种屏幕尺寸创建唯一的布局XML文件。每个布局都应保存到相应的资源目录中,并以 - <screen_size>后缀命名。例如,大屏幕的独特布局应保存在res/layout-large/下。

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

和图标

您应该始终提供适当缩放到每个广义密度存储区的位图资源:lowmediumhighextra-high密度。这有助于您在所有屏幕密度上实现良好的图形质量和性能。

MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png