当我尝试在ActionBar下立即添加一个视图时,如果我添加一个ImageView,它似乎只能工作,如下所示。
同样不适用于LinearLayout或RelativeLayout,而是删除所有ActionBar的初始内容,并将其替换为线性/相对布局内容。
为什么我无法成功添加LinearLayout或RelativeLayout,或者我可能出错的地方。我刚开始使用Android。
我的目标是这样的:
- 代码
通过添加ImageView
来扩展我们的ActionBar ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView imageView = new ImageView(actionBar.getThemedContext());
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageResource(R.drawable.center16);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM
| Gravity.CENTER_VERTICAL);
layoutParams.rightMargin = 40;
imageView.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView);
使用线性或相对布局
LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View linearorrelative = inflator.inflate(R.layout.actionbarextend, null);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM
| Gravity.CENTER_VERTICAL);
layoutParams.rightMargin = 40;
linearorrelative.setLayoutParams(layoutParams);
actionBar.setCustomView(linearorrelative);
答案 0 :(得分:1)
如果您想要ActionBar
下方的搜索栏,则应考虑使用新的Toolbar
。这是:
在应用程序布局中使用的操作栏的概括
以下是根据您的图片使用新AppCompat library的示例实现:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize" />
<android.support.v7.widget.SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp" />
</LinearLayout>
<!-- Your content here -->
</LinearLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}
<style name="Your.Base.Theme" parent="Theme.AppCompat.NoActionBar">
...
</style>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"...>
<application
...
android:theme="@style/Your.Base.Theme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<强>结果
否则,正如@ChrisStillwell建议的那样,请考虑使用ActionView
并将SearchView
作为ActionBar
放在MenuItem
中。