Вес линейного макета не работает на телефоне, отлично работает в xml-превью в андроид студии

603 просмотра

5 ответа

1619 Репутация автора

Я использовал layout_weight в LinearLayout в моем XML-файле. Предварительный просмотр в порядке, но когда я запускаю приложение в телефоне, другой вид. Это XML-файл

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

        <!--<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title_dashboard"
            android:textSize="25sp"/>-->

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="200dp">

        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="16dp">

        <ImageView
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:id="@+id/ivBrandImage"
            android:scaleType="centerCrop"
            android:src="@mipmap/ic_launcher"
            android:layout_centerVertical="true"/>


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30sp"
            android:id="@+id/tBrandName"
            android:layout_toRightOf="@+id/ivBrandImage"
            android:text="Email name"
            android:layout_marginLeft="@dimen/margin_left_brand_name"
            android:layout_centerVertical="true"/>

        <android.support.v7.widget.SwitchCompat
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tBrandName"
            android:layout_toRightOf="@+id/ivBrandImage"
            android:layout_marginLeft="@dimen/margin_left_brand_name"
            android:layout_marginTop="6dp"
            android:id="@+id/switchBrand"/>

    </RelativeLayout>

    </android.support.v7.widget.CardView>


    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_marginTop="@dimen/margin_top_dashboard_card"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:layout_marginLeft="@dimen/margin_left_dashboard"
            android:text="@string/textview_pending_approvals"
            />

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/margin_top_dashboard_card"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="@dimen/margin_left_dashboard"
            android:text="@string/textview_pending_approvals"
            android:gravity="center_vertical"
            />

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/margin_top_dashboard_card"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="@dimen/margin_left_dashboard"
            android:text="@string/textview_pending_approvals"
            android:gravity="center_vertical"
            />

    </android.support.v7.widget.CardView>

</LinearLayout>

Ниже приведен предварительный просмотр в формате XML:

предварительный просмотр в формате xml

И вот фактический скриншот того же самого на телефоне:

Скриншот

Я не могу понять, почему фактический экран отличается от предварительного просмотра xml. Может кто-нибудь сказать, пожалуйста, в чем здесь ошибка?

Автор: backslashN Источник Размещён: 18.07.2016 09:00

Ответы (5)


0 плюса

74 Репутация автора

пожалуйста, сделайте это для всех разрешений, таких как hdpi, xhdip, xxhdpi, xxxhdpi. Пожалуйста, выберите здесь разрешение вашего протестированного устройства, затем протестируйте его снова.

введите описание изображения здесь

Автор: ViratBhavsar Размещён: 18.07.2016 09:11

0 плюса

668 Репутация автора

Попробуйте следующее:

Используйте android:layout_height="0dp"и android:layout_weight="1"для первого CardView (который содержит логотип изображения Android).

Автор: Saini Размещён: 18.07.2016 09:11

0 плюса

60 Репутация автора

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <!--<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/title_dashboard"
        android:textSize="25sp"/>-->

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="200dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="16dp">

            <ImageView
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:id="@+id/ivBrandImage"
                android:scaleType="centerCrop"
                android:src="@mipmap/ic_launcher"
                android:layout_centerVertical="true"/>


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="30sp"
                android:id="@+id/tBrandName"
                android:layout_toRightOf="@+id/ivBrandImage"
                android:text="Email name"
                android:layout_marginLeft="@dimen/button_padding"
                android:layout_centerVertical="true"/>

            <android.support.v7.widget.SwitchCompat
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tBrandName"
                android:layout_toRightOf="@+id/ivBrandImage"
                android:layout_marginLeft="@dimen/button_padding"
                android:layout_marginTop="6dp"
                android:id="@+id/switchBrand"/>

        </RelativeLayout>

    </android.support.v7.widget.CardView>


    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_marginTop="@dimen/button_padding"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:layout_marginLeft="@dimen/button_padding"
            android:text="fjdkjk"
            />

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/button_padding"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="@dimen/button_padding"
            android:text="jdfkjffjkjk"
            android:gravity="center_vertical"
            />

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/button_padding"
        android:layout_weight="1"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="@dimen/button_padding"
            android:text="jkgjk"
            android:gravity="center_vertical"
            />

    </android.support.v7.widget.CardView>

</LinearLayout>

импортировать это -

скомпилируйте 'com.android.support:cardview-v7:21.0.+'

отлично работает в МИ4

Автор: chandrakant Размещён: 18.07.2016 09:15

0 плюса

1619 Репутация автора

Решение

Изменение родительского макета XML-файла с LinearLayut на RelativeLayout решило проблему. Конечно, для достижения цели потребовались небольшие изменения. Вот XML-файл, который отлично работает на телефоне тоже.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:id="@+id/cvDashboardHeader">

        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="16dp">

            <ImageView
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:id="@+id/ivBrandImage"
                android:scaleType="centerCrop"
                android:src="@mipmap/ic_launcher"
                android:layout_centerVertical="true"
                android:foreground="?android:attr/selectableItemBackground"
                android:clickable="true"/>


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="30sp"
                android:id="@+id/tBrandName"
                android:layout_toRightOf="@+id/ivBrandImage"
                android:text="Email name"
                android:layout_marginLeft="@dimen/margin_left_brand_name"
                android:layout_centerVertical="true"/>

            <android.support.v7.widget.SwitchCompat
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tBrandName"
                android:layout_toRightOf="@+id/ivBrandImage"
                android:layout_marginLeft="@dimen/margin_left_brand_name"
                android:layout_marginTop="6dp"
                android:id="@+id/switchBrand"/>

        </RelativeLayout>

    </android.support.v7.widget.CardView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_below="@+id/cvDashboardHeader">

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_marginTop="@dimen/margin_top_dashboard_card"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:foreground="?android:attr/selectableItemBackground"
            android:clickable="true">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:layout_marginLeft="@dimen/margin_left_dashboard"
                android:text="@string/textview_pending_approvals"
                />

        </android.support.v7.widget.CardView>

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="@dimen/margin_top_dashboard_card"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:foreground="?android:attr/selectableItemBackground"
            android:clickable="true">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="@dimen/margin_left_dashboard"
                android:text="@string/textview_pending_approvals"
                android:gravity="center_vertical"
                />

        </android.support.v7.widget.CardView>

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="@dimen/margin_top_dashboard_card"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:foreground="?android:attr/selectableItemBackground"
            android:clickable="true">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="@dimen/margin_left_dashboard"
                android:text="@string/textview_pending_approvals"
                android:gravity="center_vertical"
                />

        </android.support.v7.widget.CardView>

    </LinearLayout>

</RelativeLayout>
Автор: backslashN Размещён: 03.08.2016 05:20

0 плюса

289 Репутация автора

В случае LinearLayout. Это демо через код ниже. Вы можете решить свою проблему. Используйте код ниже.

  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10sp"
        android:weightSum="3">

        <TextView
            android:id="@+id/text_kpis"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@color/text_color_dark"
            android:textSize="@dimen/text_size_13" />


        <TextView
            android:id="@+id/text_target"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@color/txtbox_text_color_darek"
            android:textSize="@dimen/text_size_13" />


        <TextView
            android:id="@+id/text_actual"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@color/txtbox_text_color_darek"
            android:textSize="@dimen/text_size_13" />
    </LinearLayout>

В случае Relatvie Layout используйте код ниже.

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:padding="10sp"
        android:textColor="@android:color/white"
        >

        <TextView
            android:id="@+id/tv_kpis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/kpi"
            android:layout_alignParentLeft="true"
            android:textColor="@android:color/white"
            android:textSize="@dimen/text_size_16" />

        <TextView
            android:id="@+id/tv_target"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/traget"
            android:textColor="@android:color/white"
            android:textSize="@dimen/text_size_16" />


        <TextView
            android:id="@+id/tv_actual"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:text="@string/actual"
            android:textColor="@android:color/white"
            android:textSize="@dimen/text_size_16" />


    </RelativeLayout>
Автор: Adam Размещён: 08.10.2018 08:36
Вопросы из категории :
32x32