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()的弹出消息布局看起来很奇怪