gpt4 book ai didi

android - 为什么在使用 appcompat 和工具栏时我的自定义操作栏不显示 "match parent"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:20 24 4
gpt4 key购买 nike

我正在操作栏中设置自定义 View 。它在使用 SDK 操作栏时填充操作栏的宽度,但在使用 appcompat 版本时不会填充操作栏的宽度。为什么我的线性布局在使用 appcompat 和工具栏时没有填满宽度?我能做些什么呢?

这是应用程序兼容前的样子:

enter image description here

下面是 appcompat 的样子。 (红色显示我的自定义 View 的范围。):

enter image description here

编辑:这是使用@Seidan 的显式布局参数提示的外观。 (在应该是白色的地方显示黑色文本):

enter image description here

这是我的自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="horizontal"
android:background="#800"
>

<FrameLayout
android:id="@+id/actionbar_discard"
style="?attr/actionButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
>

<TextView
style="?android:actionBarTabTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@drawable/ic_close_white_24dp"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:paddingRight="20dp"
android:text="@string/actionbar_cancel" />
</FrameLayout>

<FrameLayout
android:id="@+id/actionbar_done"
style="?attr/actionButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >

<TextView
style="?android:actionBarTabTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@drawable/ic_check_white_24dp"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:paddingRight="20dp"
android:text="@string/actionbar_done" />
</FrameLayout>
</LinearLayout>

下面是我设置操作栏的方式:

ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(false);
ab.setDisplayOptions(
ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
ab.setCustomView(R.layout.actionbar_discard_done);

appcompat-v7:22.0.0 和新的 appcompat-v7:22.1.0 都存在这个问题。

最佳答案

感谢@Seidan 的评论。它使我找到了解决方案。样式问题是由于充气器在我给它我的 Activity 的 this 时使用了错误的主题。

总结一下,而不是问题中我代码中的这一行......

ab.setCustomView(R.layout.actionbar_discard_done);

...我有...

View v = LayoutInflater
.from(ab.getThemedContext())
.inflate(R.layout.actionbar_discard_done, null);
ActionBar.LayoutParams params = new ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.MATCH_PARENT);
ab.setCustomView(v, params);

这给了我...

correct action bar

为什么我们必须在布局和代码中指定 match_parent 是个谜,但我可以接受。

关于android - 为什么在使用 appcompat 和工具栏时我的自定义操作栏不显示 "match parent"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com