試圖找出這種佈局出了什麼問題。該應用程序是客戶端,並實現了大量不推薦/不再維護的庫(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 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;
}
}
您是否使用該應用的任何權限? –
噸。你能更具體地瞭解你在找什麼? – naphier
嗯..不知道我到底修改了什麼,但現在沒問題。稍後我會在XML佈局中發佈差異,以便我有機會可以幫助其他人。 – naphier