Android 工具栏没有';t在创建或使用XML设置高程

Android 工具栏没有';t在创建或使用XML设置高程,android,xml,android-toolbar,Android,Xml,Android Toolbar,我目前正在为学校创建一个安卓应用程序,但仍然希望尽我所能。一般来说,我对Android的开发和编码还很陌生。 该应用程序应该是一个股市游戏。 (顺便说一句,我是德国人,所以可能有一些德国变量) 这款应用应该与谷歌最近推出的Pixel2和Android Pie风格相似。因此,工具栏在创建时不应有阴影,但在滚动时应出现阴影,如Pixel 2的设置应用程序(如电池选项卡)。 下拉阴影在滚动时出现,到达顶部时消失,但工具栏以下拉阴影开始,尽管我在XML中将android:elevation设置为0,在o

我目前正在为学校创建一个安卓应用程序,但仍然希望尽我所能。一般来说,我对Android的开发和编码还很陌生。 该应用程序应该是一个股市游戏。 (顺便说一句,我是德国人,所以可能有一些德国变量) 这款应用应该与谷歌最近推出的Pixel2和Android Pie风格相似。因此,工具栏在创建时不应有阴影,但在滚动时应出现阴影,如Pixel 2的设置应用程序(如电池选项卡)。 下拉阴影在滚动时出现,到达顶部时消失,但工具栏以下拉阴影开始,尽管我在XML中将
android:elevation
设置为0,在
onCreate
方法中将
toolbar.setElevation(0)
。 为什么会发生这种情况?此方法适用于
OnScrollChangedListener

Java代码:

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.widget.NestedScrollView;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ArrayList<JSONObject> jObjList = new ArrayList<>();
    private FloatingActionButton fab;
    private TextView moneyTxt;
    private TextView sharesTxt;
    private TextView sumTxt;
    private Toolbar toolbar;
    private AppBarLayout toolbarLayout;
    private RecyclerView recyclerShares;
    private SharesAdapter sAdapter;
    private NestedScrollView scrollMain;
    private SwipeRefreshLayout refreshMain;
    private float money;
    private float sharesWorth;
    private boolean isRefreshing;
    private JSONObject jObj = new JSONObject();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = findViewById(R.id.abMain);
        toolbar.setTitleTextColor(getResources().getColor(R.color.colorPrimary));
        setSupportActionBar(toolbar);

        fab = findViewById(R.id.fabMain);
        moneyTxt = findViewById(R.id.moneyTxt);
        sharesTxt = findViewById(R.id.sharesTxt);
        sumTxt = findViewById(R.id.sumTxt);
        toolbarLayout = findViewById(R.id.abMainLayout);
        recyclerShares = findViewById(R.id.recyclerShares);
        scrollMain = findViewById(R.id.scrollMain);
        scrollMain.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
        refreshMain = findViewById(R.id.refreshMain);
        isRefreshing = false;

        try {
            jObj.put("name", "BMW");
            jObj.put("worth", 143.23);
            jObj.put("count", 5);
            jObj.put("change", -1.5);

            jObjList.add(jObj);
        } catch (JSONException e) {
        }

        sAdapter = new SharesAdapter(jObjList);
        RecyclerView.LayoutManager cLayoutManager = new CustomGridLayoutManager(getApplicationContext()) {
            @Override
            public boolean canScrollVertically() {
                return false;
            }
        };
        recyclerShares.setLayoutManager(cLayoutManager);
        recyclerShares.setItemAnimator(new DefaultItemAnimator());
        recyclerShares.setAdapter(sAdapter);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SharesActivity.class);
                startActivity(intent);
            }
        });

        toolbarLayout.setElevation(0); //TODO: Stackoverflow nach Lösung fragen
        scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                int scroll = scrollMain.getScrollY();
                if (scroll == 0) {
                    toolbarLayout.setElevation(0);
                } else {
                    toolbarLayout.setElevation(8);
                }
            }
        });

        refreshMain.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refresh(MainActivity.this);
            }
        });

        refresh(MainActivity.this);
    }

    private void refresh(Context context) {
        isRefreshing = true;

        SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);
        SharedPreferences.Editor sharedPrefEdit = sharedPref.edit();

        if (sharedPref.getBoolean("isFirstRun", true)) {
            sharedPrefEdit.putBoolean("isFirstRun", false);
            sharedPrefEdit.putFloat(getString(R.string.moneyShared), 5000);
            sharedPrefEdit.apply();
        }

        float shareWorth = 0;

        for (int i = 0; i < jObjList.size(); i++) {
            try {
                shareWorth += jObjList.get(i).getDouble("worth") * jObjList.get(i).getDouble("count");
            } catch (JSONException e) {
            }
        }
        sharedPrefEdit.putFloat(getString(R.string.sharesWorthShared), shareWorth);
        sharedPrefEdit.commit();

        money = sharedPref.getFloat(getString(R.string.moneyShared), 0);
        sharesWorth = sharedPref.getFloat(getString(R.string.sharesWorthShared), 0);

        moneyTxt.setText(String.format("%.2f€", money));
        sharesTxt.setText(String.format("%.2f€", sharesWorth));
        sumTxt.setText(String.format("%.2f€", money + sharesWorth));

        if(isRefreshing) {
            isRefreshing = false;
            refreshMain.setRefreshing(isRefreshing);
        }

        Toast.makeText(MainActivity.this, "Alles neugeladen", Toast.LENGTH_SHORT).show();
    }

    public void onShareClick(View v) {
        Intent i = new Intent(MainActivity.this, CompanyActivity.class);
        try {
            i.putExtra("name", jObj.getString("name"));
            i.putExtra("worth", jObj.getDouble("worth"));
        } catch (JSONException e) {
            i.putExtra("name", "Fehler");
            i.putExtra("worth", 0);
        }
        startActivity(i);
    }
}
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.os.Bundle;
导入android.support.design.widget.AppBarLayout;
导入android.support.design.widget.FloatingActionButton;
导入android.support.v4.widget.NestedScrollView;
导入android.support.v4.widget.swiperFreshLayout;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.DefaultItemAnimator;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.ViewTreeObserver;
导入android.widget.ScrollView;
导入android.widget.TextView;
导入android.widget.Toast;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
ArrayList jObjList=新建ArrayList();
私人浮动按钮制造厂;
私有文本视图;
私有文本视图共享文本;
私有文本视图;
专用工具栏;
专用AppBarLayout工具栏布局;
私人垃圾回收站;
私人股份制;
私有嵌套ScrollView scrollMain;
私人SwipereRefreshMain;
私人游资;
私人流通股;
私有布尔是反擦痕;
private JSONObject jObj=new JSONObject();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=findViewById(R.id.abMain);
setTitleTextColor(getResources().getColor(R.color.colorPrimary));
设置支持操作栏(工具栏);
fab=findViewById(R.id.fabMain);
moneyTxt=findViewById(R.id.moneyTxt);
sharesTxt=findViewById(R.id.sharesTxt);
sumTxt=findViewById(R.id.sumTxt);
toolbarLayout=findViewById(R.id.abMainLayout);
recyclerShares=findViewById(R.id.recyclerShares);
scrollMain=findviewbyd(R.id.scrollMain);
scrollMain.SetDegenantFocusability(ViewGroup.FOCUS在子体之前);
refreshMain=findViewById(R.id.refreshMain);
isRefreshing=假;
试一试{
jObj.put(“名称”、“宝马”);
jObj.put(“沃思”,143.23);
jObj.put(“计数”,5);
jObj.put(“变更”,-1.5);
jObjList.add(jObj);
}捕获(JSONException e){
}
sAdapter=新共享sAdapter(作业列表);
RecycleView.LayoutManager ClayotManager=新的CustomGridLayoutManager(getApplicationContext()){
@凌驾
公共布尔值(){
返回false;
}
};
回收商。setLayoutManager(cLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
回收站设置适配器(sAdapter);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MainActivity.this、SharesActivity.class);
星触觉(意向);
}
});
toolbarLayout.setElevation(0);//TODO:Stackoverflow nach Lösung fragen
scrollMain.getViewTreeObserver().addOnScrollChangedListener(新的ViewTreeObserver.OnScrollChangedListener(){
@凌驾
public void onScrollChanged(){
int scroll=scrollMain.getScrollY();
如果(滚动==0){
工具栏布局。设置标高(0);
}否则{
工具栏布局。设置立面图(8);
}
}
});
refreshMain.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener()){
@凌驾
公共void onRefresh(){
刷新(MainActivity.this);
}
});
刷新(MainActivity.this);
}
私有无效刷新(上下文){
isRefreshing=真;
SharedReferences SharedReferences=context.getSharedReferences(getString(R.string.preference\u file\u key)、context.MODE\u PRIVATE);
SharedPreferences.Editor SharedPreferEdit=sharedPref.edit();
if(sharedPref.getBoolean(“isFirstRun”,true)){
putBoolean(“isFirstRun”,false);
SharedPreEdit.putFloat(getString(R.string.moneyShared),5000);
SharedPreEdit.apply();
}
浮动股票价值=0;
对于(int i=0;i<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBackground"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/abMainLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="0dp">

        <android.support.v7.widget.Toolbar
            android:id="@+id/abMain"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorBackgroundAccent"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    </android.support.design.widget.AppBarLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fabMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="16dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:backgroundTint="@color/colorBackground"
        android:src="@drawable/ic_note_add"
        app:borderWidth="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/refreshMain"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/abMainLayout">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/scrollMain"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusableInTouchMode="true"
            app:layout_constraintTop_toBottomOf="@+id/abMainLayout">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <GridLayout
                    android:id="@+id/gridMoney"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/colorBackgroundAccent"
                    android:orientation="horizontal"
                    android:paddingBottom="@dimen/activity_vertical_margin"
                    android:paddingTop="24dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@id/abMain">

                    <TextView
                        android:id="@+id/sumTxt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_columnSpan="5"
                        android:layout_columnWeight="1"
                        android:layout_gravity="center"
                        android:layout_marginBottom="16dp"
                        android:layout_marginTop="8dp"
                        android:layout_row="1"
                        android:textColor="@color/colorDarkText"
                        android:textSize="50sp"
                        android:textStyle="bold" />

                    <ImageView
                        android:id="@+id/moneyImg"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_column="1"
                        android:layout_columnWeight="1"
                        android:layout_gravity="right|center_vertical"
                        android:layout_row="2"
                        android:background="@android:color/transparent"
                        android:scaleX="0.5"
                        android:scaleY="0.5"
                        app:srcCompat="@drawable/ic_money" />

                    <TextView
                        android:id="@+id/moneyTxt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_column="2"
                        android:layout_columnWeight="1"
                        android:layout_gravity="left|center_vertical"
                        android:layout_row="2"
                        android:background="@android:color/transparent"
                        android:textColor="@color/colorLightText"
                        android:textSize="15sp" />

                    <ImageView
                        android:id="@+id/sharesImg"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_column="3"
                        android:layout_columnWeight="1"
                        android:layout_gravity="right|center_vertical"
                        android:layout_row="2"
                        android:background="@android:color/transparent"
                        android:scaleX="0.5"
                        android:scaleY="0.5"
                        app:srcCompat="@drawable/outline_assessment_black_36" />

                    <TextView
                        android:id="@+id/sharesTxt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_column="4"
                        android:layout_columnWeight="1"
                        android:layout_gravity="left|center_vertical"
                        android:layout_row="2"
                        android:background="@android:color/transparent"
                        android:textColor="@color/colorLightText"
                        android:textSize="15sp" />

                </GridLayout>

                <View
                    android:id="@+id/dividerMoney"
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/colorDivider"
                    app:layout_constraintTop_toBottomOf="@id/gridMoney" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="@dimen/recycler_horizontal_margin"
                    android:layout_marginStart="@dimen/recycler_horizontal_margin"
                    android:layout_marginTop="@dimen/activity_vertical_margin"
                    android:text="Aktien"
                    android:textColor="@color/colorPrimary"
                    android:textStyle="bold"
                    app:layout_constraintEnd_toEndOf="@+id/dividerMoney"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/gridMoney" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recyclerShares"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="@dimen/recycler_title_bottom_margin"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/textView" />
            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </android.support.v4.widget.SwipeRefreshLayout>

</android.support.constraint.ConstraintLayout>
StateListAnimator stateListAnimator = new StateListAnimator();
stateListAnimator.addState(new int[0], ObjectAnimator.ofFloat(view, "elevation", 0));
appBarLayout.setStateListAnimator(stateListAnimator);
toolbarLayout = findViewById(R.id.abMainLayout); 
    toolbarLayout.StateListAnimator = null;