【问题标题】:Layout for 7" tablets not detected未检测到 7 英寸平板电脑的布局
【发布时间】:2015-07-16 17:50:00
【问题描述】:

我有 /layout 用于正常屏幕尺寸,/layout-sw600dp 用于 7" 平板电脑和 10" 平板电脑。

7" 和 10" 应该看起来一样。该应用程序适用于普通屏幕和 10 英寸屏幕,但它没有为我提供适用于 7 英寸屏幕的正确布局。

它应该只显示平板电脑屏幕的主从布局。

10" & 7" 屏幕的 XML 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp" android:baselineAligned="false"
    android:divider="?android:attr/dividerHorizontal" android:orientation="horizontal"
    android:showDividers="middle" tools:context=".artistListActivity">

    <!--
    This layout is a two-pane layout for the artists
    master/detail flow.

    -->

    <fragment android:id="@+id/artist_list"
        android:name="com.example.amr.spotifystreamer.MainActivityFragment" android:layout_width="0dp"
        android:layout_height="match_parent" android:layout_weight="1.70"
        tools:layout="@android:layout/list_content" />

    <FrameLayout android:id="@+id/artist_detail_container" android:layout_width="0dp"
        android:layout_height="match_parent" android:layout_weight="2.74" />

</LinearLayout>

MainActivity.java:

package com.example.amr.spotifystreamer;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.drawable.GradientDrawable;
import android.os.PersistableBundle;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import java.util.ArrayList;
import kaaes.spotify.webapi.android.models.Artist;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        View detailView = findViewById(R.id.artist_detail_container);
        MainActivityFragment.mTwoPane = detailView!=null &&
                detailView.getVisibility()==View.VISIBLE;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }
        if(id==R.id.nowplaying){{
            Intent intent = new Intent(getApplication(), MediaPlayer.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
        }}
        return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    看来您是 udacity 的 android 纳米学位学生,我也是。因此,如果您的 7 英寸和 10 英寸布局相同,则无需使用 sw720dp,因为 sw600dp 也涵盖了这一点。

    其实sw是最小宽度的意思,所以如果你的7寸平板是480 x 800分辨率的廉价平板,它就不会属于sw600dp组。普通7寸平板的分辨率至少是600 x 1240 . 尝试减少最小宽度数字并检查您的 7" 平板电脑上的布局是否发生变化,即尝试从 sw480dp 开始,等等。

    【讨论】:

    • 是的,我是纳米学位的学生:D ..起初我只有 /layout-xlarge,它也只适用于 10" ..有什么建议吗?
    • layout-xlarge 适用于 android 3.2 以下的 android 版本。如果您的最小 sdk 大于 13,则不需要包含它。我已经编辑了答案以包含更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2013-11-01
    • 2013-06-18
    相关资源
    最近更新 更多