PercentRelativeLayout在模拟器上没关系,在手机上也行不通

时间:2016-07-03 19:57:57

标签: android android-layout android-studio

我刚刚实施了PercentRelativeLayout。我已将compile 'com.android.support:percent:24.2.0'添加到gradle中,因此Android Studio至少会识别该视图。并添加了Google API。

我有渲染问题。在模拟器中,我的显示器工作正常。安装在运行Android 4ish的旧手机上,会出现TextViews,但不会显示图像视图。

在预览渲染中(在设计选项卡中),当我切换到API 23时,ImageView会显示,而不是API 24.

我觉得这只是工作。任何已知的修复程序?不幸的是,视图对于扩展我的布局至关重要。

编辑:预览突然再次与几个重新启动的android studio一起工作。没有改变别的。

布局工作在预览中一直回到API 16但仍然无法在手机上工作。 ImageViews没有显示。

下面的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.y"
tools:showIn="@layout/app_bar_main"
android:background="#FFF"
android:weightSum="1"
android:orientation="vertical">

 <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scrollView"
    android:scrollIndicators="top">

    <android.support.percent.PercentRelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="This text appears correctly"
            android:textSize="28sp"
            android:id="@+id/textMainTitle"
            android:layout_gravity="center"
            android:layout_alignParentTop="true"
            android:textColor="#ffffff"
            android:singleLine="true"/>

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="As does this text"
            android:id="@+id/textMainSubTitle"
            android:layout_gravity="center_horizontal"
            android:layout_below="@id/textMainTitle"
            />


        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/btnIntro"
            android:src="@drawable/button1" //DOES NOT APPEAR IN PHONE
            app:layout_widthPercent="30%"
            app:layout_heightPercent="25%"
            android:layout_below="@id/textMainSubTitle"
            android:layout_marginStart="10dp"
            android:layout_marginLeft="10dp" />

   </android.support.percent.PercentRelativeLayout>

 </ScrollView>


</LinearLayout>

2 个答案:

答案 0 :(得分:2)

终于弄明白了。问题实际上在XML中。在此发布以供参考,希望有人会在将来发现它有用。

问题来自设置layout_heightPercentlayout_widthPercent。由于某种原因,这不允许显示有问题的视图。我不认为它与缩放宽高比有任何关系,因为按钮也存在问题(没有宽高比可以维护。)

但是,如果您对PercentRelativeLayout存在可见性问题,请参阅下文。

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/btnIntro"
        android:src="@drawable/button1" 
        app:layout_widthPercent="30%"       // MUST SET ONE 
        app:layout_heightPercent="25%"      // OR OTHER NOT BOTH
        android:layout_below="@id/textMainSubTitle"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="10dp" />

答案 1 :(得分:0)

受BR89的启发,我的问题的解决方案实际上是使用&#34; android:src&#34;而不是&#34; app:srcCompat&#34;并指定&#34; 0dp&#34; on&#34; android:layout_width&#34;

但同时放置&#34; app:layout_widthPercent&#34;和&#34; app:layout_heightPercent&#34;但是我的物理设备上没有任何问题。

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/splash">
    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_widthPercent="50%"
        app:layout_heightPercent="50%"
        app:layout_marginTopPercent="25%"
        app:layout_marginLeftPercent="25%"
        android:src="@drawable/logo"/>
</android.support.percent.PercentRelativeLayout>