2015-11-17 35 views
1

試圖找出這種佈局出了什麼問題。該應用程序是客戶端,並實現了大量不推薦/不再維護的庫(actionbar sherlock,jess.ui.grid.lib,com.handmark.pulltorefresh.library)。在Android 5(Nexus 7)上一切正常,但在Android 6(Nexus 5)上佈局中的圖像消失,TextViews可見,但它們最終會沿着屏幕展開。 Eclipse中的視圖看起來很好。如果我將這個視圖放在獨立的應用程序中,它可以正常工作。不幸的是,這個應用程序有點複雜,我不是一個機器人專家,所以很難調試。所以,任何幫助表示讚賞。Android上佈局問題6. Inflater問題?在Android 5及更高版本上正常工作

我知道這是一個長鏡頭,因爲我無法真正提供一個重現此問題的示例項目,但我希望有人遇到類似問題並能提供幫助。

首先這裏是圖像: 的Nexus 7 - 安卓5.1.1確定 Nexus 7 - Android 5.1.1

的Nexus 5 - 在Android 6.0 ...一些文本可見再往下的屏幕,但沒有圖像,而不是所有的文本。

Nexus 5 - Android 6.0

home_activity_intro.xml [編輯 - 粘貼對不起錯了XML]

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_centerInParent="true" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginStart="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginEnd="10dp" 
    android:layout_marginTop="30dp" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center_horizontal" > 

     <ImageButton 
      android:id="@+id/home_intro_tutorial_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:background="@android:color/transparent" 
      android:scaleType="fitCenter" 
      android:src="@drawable/home_callout_top" 
      android:contentDescription="@string/home_intro_tutorial_title"/> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="5dp" 
      android:text="@string/home_intro_tutorial_title" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="5dp" 
      android:layout_gravity="center_horizontal|bottom"> 

      <ImageView 
       android:id="@+id/imageView1" 
       android:layout_width="wrap_content" 
       android:layout_height="30dp" 
       android:src="@drawable/generic_blank_btn_up" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal|bottom" 
       android:layout_marginBottom="5dp" 
       android:text="@string/home_intro_tutorial_sub_title" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 
     </FrameLayout> 
    </FrameLayout> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageButton 
      android:id="@+id/home_intro_tutorial_find_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:background="@android:color/transparent" 
      android:scaleType="fitCenter" 
      android:src="@drawable/home_callout_find_and_follow" /> 

     <TextView 
      android:id="@+id/followCalloutTitle" 
      style="@style/calloutTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="105dp" 
      android:layout_marginLeft="105dp" 
      android:text="@string/home_intro_find_title" /> 

     <TextView 
      android:id="@+id/followCalloutSubTitle" 
      style="@style/calloutSubTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignStart="@id/followCalloutTitle" 
      android:layout_alignLeft="@id/followCalloutTitle" 
      android:layout_alignEnd="@id/home_intro_tutorial_find_button" 
      android:layout_alignRight="@id/home_intro_tutorial_find_button" 
      android:layout_below="@id/followCalloutTitle" 
      android:layout_marginEnd="10dp" 
      android:layout_marginRight="10dp" 
      android:text="@string/home_intro_find_sub_title" />    
    </RelativeLayout> 


    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageButton 
      android:id="@+id/home_intro_share_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:background="@android:color/transparent" 
      android:scaleType="fitCenter" 
      android:src="@drawable/home_callout_share" /> 

     <TextView 
      android:id="@+id/shareCalloutTitle" 
      style="@style/calloutTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="25dp" 
      android:layout_marginLeft="25dp" 
      android:text="@string/home_intro_share_title" /> 

     <TextView 
      android:id="@+id/shareCalloutSubTitle" 
      style="@style/calloutSubTitle" 
      android:layout_width="180dp" 
      android:layout_height="wrap_content" 
      android:layout_alignStart="@id/shareCalloutTitle" 
      android:layout_alignLeft="@id/shareCalloutTitle" 
      android:layout_below="@id/shareCalloutTitle" 
      android:layout_marginEnd="10dp" 
      android:layout_marginRight="10dp" 
      android:text="@string/home_intro_share_sub_title" /> 
    </RelativeLayout> 


    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageButton 
      android:id="@+id/home_intro_collections_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:background="@android:color/transparent" 
      android:scaleType="fitCenter" 
      android:src="@drawable/home_callout_collections" /> 

     <TextView 
      android:id="@+id/collectionCalloutTitle" 
      style="@style/calloutTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="125dp" 
      android:layout_marginLeft="125dp" 
      android:text="@string/home_intro_collections_title" /> 

     <TextView 
      android:id="@+id/collectionCalloutSubTitle" 
      style="@style/calloutSubTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignStart="@id/collectionCalloutTitle" 
      android:layout_alignLeft="@id/collectionCalloutTitle" 
      android:layout_alignEnd="@id/home_intro_collections_button" 
      android:layout_alignRight="@id/home_intro_collections_button" 
      android:layout_below="@id/collectionCalloutTitle" 
      android:layout_marginEnd="30dp" 
      android:layout_marginRight="30dp" 
      android:text="@string/home_intro_collections_sub_title" /> 
    </RelativeLayout> 


    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageButton 
      android:id="@+id/home_intro_privacy_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:background="@android:color/transparent" 
      android:scaleType="fitCenter" 
      android:src="@drawable/home_callout_privacy" /> 

     <TextView 
      android:id="@+id/privacyCalloutTitle" 
      style="@style/calloutTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="25dp" 
      android:layout_marginLeft="25dp" 
      android:text="@string/home_intro_privacy_title" /> 

     <TextView 
      android:id="@+id/privacyCalloutSubTitle" 
      style="@style/calloutSubTitle" 
      android:layout_width="180dp" 
      android:layout_height="wrap_content" 
      android:layout_alignStart="@id/privacyCalloutTitle" 
      android:layout_alignLeft="@id/privacyCalloutTitle" 
      android:layout_below="@id/privacyCalloutTitle" 
      android:layout_marginRight="10dp" 
      android:layout_marginEnd="10dp" 
      android:text="@string/home_intro_privacy_sub_title" /> 
    </RelativeLayout> 
</LinearLayout> 

HomeActivityAdapterIntro.java

package com.shared2you.android.powerslyde.activities.main_activity.home_screen; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.view.ViewTreeObserver; 
import android.view.ViewTreeObserver.OnGlobalLayoutListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.LinearLayout; 

import com.shared2you.android.powerslyde.R; 
import com.shared2you.android.powerslyde.activities.main_activity.BaseActivity; 
import com.shared2you.android.powerslyde.activities.main_activity.profile_screen.ProfileEditActivity; 
import com.shared2you.android.powerslyde.networkApis.AndroidLog; 

/* Adapter for the activities list on the Home Page. When there are 0 memberActivities to display 
* the intro row will be displayed. 
*/ 
public class HomeActivityAdapterIntro extends ArrayAdapter<HomeActivityResult> { 

    private static String TAG = "HomeActivityAdapterIntro"; 
    private final Context context; 
    private final HomeActivityResult[] values; 

    public HomeActivityAdapterIntro(Context context, HomeActivityResult[] values) { 
     super(context, R.layout.left_nav_row, values); 
     this.context = context; 
     this.values = values; 

     String valuesOut = ""; 
     for (int i = 0; i < values.length; i++) { 
      if (values[i].activityType == HomeActivityResult.kHomeActivityResultIntro) 
       valuesOut += "kHomeActivityResultIntro"; 
      else if (values[i].activityType == HomeActivityResult.kHomeActivityResultReal) 
       valuesOut += "kHomeActivityResultReal"; 
      else 
       valuesOut += "uknown"; 

      if (i < values.length - 1) 
       valuesOut += ", "; 
     } 

     AndroidLog.i(TAG, "constructor -- values count: " + String.valueOf(values.length) + " -- values: " + valuesOut); 
    } 

    /* 
    * Static method, called by object that creates HomeActivityAdapter to get 
    * the array that should be passed into the HomeActivityAdapter constructor 
    */ 
    public static HomeActivityResult[] retrieveIntroValues() { 
     // TODO: get activity from sqllite 
     // Right now we are just creating a black HomeActivityResults row and 
     // setting the type to 'kHomeActivityResultIntro' 
     HomeActivityResult[] results = new HomeActivityResult[1]; 
     results[0] = new HomeActivityResult(null, HomeActivityResult.kHomeActivityResultIntro); 
     AndroidLog.i(TAG, "retrieveIntroValues - setting typ to kHomeActivityResultIntro"); 
     return results; 

    } 

    /* 
    * Returns row based on HomeActivityResult.activityType. Can display intro 
    * row, or activity row. (non-Javadoc) 
    * 
    * @see android.widget.ArrayAdapter#getView(int, android.view.View, 
    * android.view.ViewGroup) 
    */ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO: Create and return activity row when appropriate 

     HomeActivityResult result = values[position]; 
     AndroidLog.i(TAG, "getView -- position: " + String.valueOf(position) + " result.activityType: " 
       + ((result.activityType == HomeActivityResult.kHomeActivityResultIntro) ? "intro" : "real activity")); 
     View rowView = null; 
     if (result.activityType == HomeActivityResult.kHomeActivityResultIntro) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      rowView = inflater.inflate(R.layout.home_activity_intro, parent, false); 

      // load youtube tutorial on tutorial button click 
      final ImageButton tutorialButton = (ImageButton) rowView.findViewById(R.id.home_intro_tutorial_button); 
      tutorialButton.setOnClickListener(new OnClickListener() { 
       public void onClick(View v) { 
        context.startActivity(
          new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=_78yr9R-cCA"))); 
       } 
      }); 

      final ImageButton findButton = (ImageButton) rowView.findViewById(R.id.home_intro_tutorial_find_button); 
      findButton.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        EditText searchText = (EditText) ((Activity) context).findViewById(R.id.searchText); 
        searchText.requestFocus(); 
       } 
      }); 

      final ImageButton shareButton = (ImageButton) rowView.findViewById(R.id.home_intro_share_button); 
      shareButton.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        BaseActivity baseActivity = (BaseActivity) context; 
        baseActivity.menu.setContent(baseActivity.shareView); 
        baseActivity.setupCommon(); 
        baseActivity.shareViewController.setupShareView(); 
        baseActivity.fromHomeIntro = true; 
       } 
      }); 

      final ImageButton collectionsButton = (ImageButton) rowView 
        .findViewById(R.id.home_intro_collections_button); 
      collectionsButton.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        BaseActivity baseActivity = (BaseActivity) context; 
        baseActivity.menu.setContent(baseActivity.collectionsView); 
        baseActivity.setupCommon(); 
        baseActivity.collectionsViewController.setupCollectionsView(); 
        baseActivity.fromHomeIntro = true; 

       } 
      }); 

      final ImageButton privacyButton = (ImageButton) rowView.findViewById(R.id.home_intro_privacy_button); 
      privacyButton.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        Intent editIntent = new Intent(context, ProfileEditActivity.class); 
        context.startActivity(editIntent); 
       } 
      }); 

      if (parent == null) 
       AndroidLog.e(TAG, "Parent is null"); 
      else 
       AndroidLog.i(TAG, "Parent is not null - parent class is: " + parent.getClass().getName()); 

     } else { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      rowView = inflater.inflate(R.layout.home_activity_intro, parent, false); 
     } 
     return rowView; 
    } 
} 
+0

您是否使用該應用的任何權限? –

+0

噸。你能更具體地瞭解你在找什麼? – naphier

+0

嗯..不知道我到底修改了什麼,但現在沒問題。稍後我會在XML佈局中發佈差異,以便我有機會可以幫助其他人。 – naphier

回答

0

我幾乎同樣的問題在Android 6.0,同時具有LinearLayout中的一些子視圖。 我將Linearlayout更改爲android.support.v7.widget.LinearLayoutCompat,並且它在Android 6.0及其下的版本上正常工作。

希望這會幫助你!