xml 布局看起来很奇怪(在操作栏中添加按钮或图标)

xml layout look weird (Add button or icon in action bar)

我想在操作栏中添加保存 button,但它显示在 action bar 下方。

正确的解法是什么?任何帮助将不胜感激。

代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black"
        android:theme="@style/Theme.AppCompat"
        android:minHeight="?attr/actionBarSize">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_gravity="right"
            android:layout_height="match_parent">

            <Button
                android:id="@+id/save"
                android:text="SAVE"
                android:layout_width="wrap_content"
                android:background="#000"
                android:textColor="#fff"
                android:layout_height="wrap_content"
                android:textSize="16dp" />

        </LinearLayout>

    </android.support.v7.widget.Toolbar>

    <ImageView
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:background = "@drawable/img_receipt"
        android:src="@drawable/upload"
        android:scaleType="fitXY"
        android:layout_width="270dp"
        android:layout_height="290dp"
        android:id="@+id/image" />

    <TextView
        android:layout_marginLeft="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Add a description"
        android:textColor="@color/black"
        android:textStyle="bold"
        android:layout_marginTop="40dp"
        android:id="@+id/textView"
        android:layout_below="@+id/image"
         />

    <EditText
        android:layout_marginLeft="5dp"
        android:layout_width="350dp"
        android:paddingBottom="75dp"
        android:paddingLeft="10dp"
        android:layout_height="120dp"
        android:hint="Add a description"
        android:textColor="@color/black"
        android:background="@drawable/roundedcorner_edittext"
        android:layout_marginTop="80dp"
        android:layout_below="@+id/image"
        android:id="@+id/editText" />

</RelativeLayout>

屏幕截图

如您所见,保存按钮位于操作栏下方。我希望它放在健康应用标题旁边。

您可以像那样在操作栏上添加按钮...

  1. 删除工具栏(如果您只使用在操作栏上添加保存按钮)

  2. 创建 menu_main xml 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    
    <item
    android:id="@+id/action_save"
    android:icon="@drawable/you_resourse_here"
    android:title="Save"
    app:showAsAction="always"
    android:orderInCategory="0"/>
    
    </menu>
    
  3. 然后在您的 activity 中,如果您创建了一个新文件,您需要编辑 onCreateOptionsMenu

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
    }
    
  4. 您可以通过以下方法编辑操作的作用:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    
    
    if (id == R.id.action_save) {
       do something when you click on save button
     return true;
     }
    
     return super.onOptionsItemSelected(item);
      }
    

    希望对您有所帮助。

终于成功了

在我的收据Activity中,添加这两行

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

并在 androidMainFest 中添加此行以避免应用崩溃

<activity android:name=".Receipt"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
    // Initially, make an XML file inside your layout folder say "toolbar.xml"

    <?xml version="1.0" encoding="utf-8"?>

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/lightblue"
        app:theme="@style/ToolbarColoredBackArrow"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android" >
    </android.support.v7.widget.Toolbar>


// And inside any layout file where you want to use toolbar jsut do       following

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.limatrder.activitis.Bill_details">

 <FrameLayout
        android:id="@+id/framelayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <include layout="@layout/toolbar" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center">

            <ImageView
                android:id="@+id/imgback_billDetail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerInParent="true"
                android:padding="15dp"
                android:src="@drawable/action_bar_cross" />

            <TextView
                android:id="@+id/txtviewcart_billdetais"

                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginLeft="20dp"
                android:padding="15dp"
                android:text="View Cart"
                android:textColor="@color/white"
                android:textSize="18dp" />

        </RelativeLayout>
    </FrameLayout>


<!-- here you can write your code for remaining design-->

        <LinearLayout
            android:orientation="vertical"
            android:layout_below="@+id/framelayout"
            android:background="@color/lightblue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
       </LinearLayout>


    </RelativeLayout>


// and in yor style.xml use 

Theme.AppCompat.Light.NoActionBar