【问题标题】:xml layout look weird (Add button or icon in action bar)xml 布局看起来很奇怪(在操作栏中添加按钮或图标)
【发布时间】:2017-05-01 22:40:15
【问题描述】:

我想在操作栏中添加一个保存 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>

屏幕截图

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

【问题讨论】:

    标签: android xml button android-actionbar


    【解决方案1】:

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

    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. 然后在您的活动中,如果您创建了一个新文件,您需要编辑 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);
        }
      

      希望这会对你有所帮助。

    【讨论】:

    • 但我想在操作栏上有一个button,而不是任何图标
    • 您可以使用 img 作为按钮,例如 ..android:icon="@drawable/you_resourse_here"..它看起来像一个按钮,也可以用作按钮
    【解决方案2】:

    终于搞定了

    在我的 Receipt Activity 中,添加这两行

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

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

    <activity android:name=".Receipt"
                android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>
    

    【讨论】:

      【解决方案3】:
          // 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多