2016-10-13 19 views
1

私はAndroidの初心者です。現在、自己プロジェクトに取り組んでいます。 Nexus 5エミュレータではうまく描画されますが、Nexus 4エミュレータでは描画されない1つのユーザープロファイルページを作成しました。Android UIの互換性の問題

ここに、両方のエミュレータのスクリーンショットがあります。 Nexus5エミュレータから

enter image description here

あるNexus4エミュレータの違い

enter image description here

Nexus4エミュレータから...

  • Nexus5エミュレータで表示される[戻る]ボタンを含む上部のヘッダーバーがありません。
  • プロフィール画像は赤い背景に戻っています。
ここ

ソースコードがある...

activity_user_profile.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.bhramaan.android.bhramaan.UserProfileActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/activity_user_profile" > 

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

     <include 
     android:id="@+id/toolbar" 
     layout="@layout/tool_bar" /> 

     <ImageView 
      android:id="@+id/header_cover_image" 
      android:layout_width="match_parent" 
      android:layout_height="200dp" 
      android:scaleType="centerCrop" 
      android:src="@mipmap/profile_header_background" /> 

     <ImageButton 
      android:id="@+id/user_profile_photo" 
      android:layout_width="120dp" 
      android:layout_height="120dp" 
      android:layout_below="@+id/header_cover_image" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="-60dp" 
      android:background="@drawable/profile_circular_border_imageview" 
      android:elevation="5dp" 
      android:padding="20dp" 
      android:scaleType="centerCrop" 
      android:src="@drawable/default_profile_new" /> 

     <RelativeLayout 
      android:id="@+id/profile_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/header_cover_image" 
      android:background="#ebca0707" 
      android:elevation="4dp" 
      android:paddingBottom="24dp"> 

      <TextView 
       android:id="@+id/user_profile_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="76dp" 
       android:text="Suresh Kumar Majhi" 
       android:textColor="#fff" 
       android:textSize="24sp" 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/user_profile_short_bio" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/user_profile_name" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="12dp" 
       android:text="Write codes and explore the world" 
       android:textColor="#fff" 
       android:textSize="14sp" /> 
     </RelativeLayout> 


     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/profile_layout" 
      android:layout_marginTop="5dp" 
      android:orientation="vertical"> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dp" 
       android:background="#fff" 
       android:clickable="true" 
       android:elevation="4dp" 
       android:padding="20dp" 
       android:text="Android Profile UI Design" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dp" 
       android:layout_marginBottom="3dp" 
       android:layout_marginTop="3dp" 
       android:background="#fff" 
       android:clickable="true" 
       android:elevation="4dp" 
       android:padding="20dp" 
       android:text="Android Profile XMl UI Design" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dp" 
       android:background="#fff" 
       android:clickable="true" 
       android:elevation="4dp" 
       android:padding="20dp" 
       android:text="Android Profile UI Design" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dp" 
       android:layout_marginBottom="3dp" 
       android:layout_marginTop="3dp" 
       android:background="#fff" 
       android:clickable="true" 
       android:elevation="4dp" 
       android:padding="20dp" 
       android:text="Android Profile XMl UI Design" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="5dp" 
       android:background="#fff" 
       android:clickable="true" 
       android:elevation="4dp" 
       android:padding="20dp" 
       android:text="Android Profile UI Design" /> 
     </LinearLayout> 
    </RelativeLayout> 
</ScrollView> 

UserProfileActivity.java

package com.bhramaan.android.bhramaan; 

import android.app.ActionBar; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

public class UserProfileActivity extends AppCompatActivity { 

    Toolbar toolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_profile); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       finish(); 
       return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     return true; 
    } 
} 

profile_circular_border_imageview.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners android:radius="100dp" /> 
    <solid android:color="#41ba7a" /> 
    <stroke 
     android:width="3dip" 
     android:color="#f9f9f9" /> 
    <padding 
     android:bottom="4dp" 
     android:left="4dp" 
     android:right="4dp" 
     android:top="4dp" /> 
</shape> 

マイGradleの依存関係

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "24.0.0" 

    defaultConfig { 
     applicationId "com.bhramaan.android.bhramaan" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.mcxiaoke.volley:library:1.0.19' 
    compile 'com.roughike:bottom-bar:2.0.2' 
} 

誰もが、私は私が間違ってやっているのですか理解する助けてください。

+0

build.gradleの依存関係を追加できますか? –

+0

@mohammadrezakhalifehご返信ありがとうございます。私はGradleの依存関係で投稿を更新しました。 – mi6crazyheart

+0

あなたのプロジェクトを再構築しようとしています...回答者には材料設計の後方互換性が言及されていましたが、最初は同じですがappcompat-v7を追加しましたが問題はないかもしれません –

答えて

3

1つのエミュレータがAPI 23 Marshmallowをターゲティングし、1つがAPI 19 (Kitkat)をターゲットにしているため、エミュレータごとに異なる結果が表示されます。

Kitkatは標高をサポートしていないため、XMLに追加すると何も起こりません。あなたはそれについてLintの警告を受けているはずです。

修正するには、プロフィール画像のXML要素を@id/profile_layoutRelativeLayoutの下に移動してください。

この問題を解決するには、@layout/tool_barを共有する必要があります。しかし、私はそれも高度を使用していると賭けるでしょう。

+0

Profile Image XML要素の順序を変更した後、Nexus4エミュレータで正常に機能しています。ええ、私はその ''ツールバー ''で標高を使っています。アンドロイドの世界には新しいことがたくさんあります。私は自分でツールバーの問題を修正しようとします。ガイダンスをありがとう。 – mi6crazyheart

+0

@ mi6crazyheart問題はありません、新しいAndroidのコーダーのために - あなたはうまくいきます。 AndroidとAPIのレベルでは、たくさんの "落書き"があります。あなたがLintをオフにしないようにしてください。ほとんどの場合、問題があるときは教えてくれるでしょう。 – Knossos

2

仰角を使用して他のレイアウトの前に配置するため、プロフィール画像が残っていますが、仰角はAPIレベル21以上でのみ使用できます。

もNexus 4用APIレベル19

あなたはレイアウトの順序を変更し、赤い箱の後ImageViewのを置くことができます。