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

Posted

技术标签:

【中文标题】xml 布局看起来很奇怪(在操作栏中添加按钮或图标)【英文标题】:xml layout look weird (Add button or icon in action bar) 【发布时间】: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_
    android:layout_>

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

        <LinearLayout
            android:layout_
            android:layout_gravity="right"
            android:layout_>

            <Button
                android:id="@+id/save"
                android:text="SAVE"
                android:layout_
                android:background="#000"
                android:textColor="#fff"
                android:layout_
                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_
        android:layout_
        android:id="@+id/image" />

    <TextView
        android:layout_marginLeft="15dp"
        android:layout_
        android:layout_
        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_
        android:paddingBottom="75dp"
        android:paddingLeft="10dp"
        android:layout_
        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】:

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

    删除工具栏(如果您仅用于在操作栏上添加保存按钮)

    创建 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>
    

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

    您可以通过以下方法编辑操作的作用:

    @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_
        android:layout_
        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_
    android:layout_
    tools:context="com.limatrder.activitis.Bill_details">

 <FrameLayout
        android:id="@+id/framelayout"
        android:layout_
        android:layout_>

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

        <RelativeLayout
            android:layout_
            android:layout_
            android:layout_gravity="center">

            <ImageView
                android:id="@+id/imgback_billDetail"
                android:layout_
                android:layout_
                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_
                android:layout_
                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_
            android:layout_>
       </LinearLayout>


    </RelativeLayout>


// and in yor style.xml use 

Theme.AppCompat.Light.NoActionBar

【讨论】:

以上是关于xml 布局看起来很奇怪(在操作栏中添加按钮或图标)的主要内容,如果未能解决你的问题,请参考以下文章

使用操作栏中的图标按钮导航到另一个活动

在操作栏中调整应用程序名称的大小

EditText.setError()的弹出消息布局看起来很奇怪

在导航栏中插入图标​​/使 BarButtonItem 不可点击 Swift iOS

如何更改 SearchView 默认图标?

当可见性设置为Gone或Visible时,如何排列线性布局?