gpt4 book ai didi

java - Android 自定义操作栏未填充父项,标题未居中对齐

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:21 24 4
gpt4 key购买 nike

我一直在尝试以下问题:我创建了一个自定义操作栏:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/com_facebook_blue" >

<TextView
android:id="@+id/action_bar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_centerInParent="true"
android:textSize="30dp"
android:textColor="#ffffff"
android:text="@string/app_title"/>

</RelativeLayout>

它由 GraphicsBuilder 类以下列方式扩充:

public static void setupActionBar(String title, Activity a) {

final ViewGroup actionBarLayout = (ViewGroup) a.getLayoutInflater()
.inflate(R.layout.action_bar_layout, null);
final ActionBar actionBar = a.getActionBar();

actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionBarLayout);
final int actionBarColor = a.getResources().getColor(R.color.main_red);
actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor));

TextView tv = (TextView) actionBarLayout.findViewById(R.id.action_bar_title);
Typeface font = Typeface.createFromAsset(a.getAssets(), "fonts/Molle-Regular.ttf");
tv.setText(title);
tv.setTypeface(font);
}

这会导致以下结果(我将标题栏背景设为蓝色以突出显示该问题):

enter image description here

基本上看起来自定义操作栏没有填充父宽度,因此任何尝试将标题居中对齐都是无用的。我该如何解决这个问题?

最佳答案

我知道这已经过去很久了。将其设置为自定义 View 后,通过更改布局参数来解决此问题。

我的逻辑是,当您第一次给它充气时,它会采用原始​​容器的大小。当你打电话时:

actionBar.setCustomView(titlebar);

它已经预设了尺寸。我的解决方案是:

View titlebar = inflater.inflate(R.layout.titlebar, null);

// Do stuff to Title Bar //

ActionBar actionBar = getActionBar();
actionBar.setCustomView(titlebar);
View v = actionBar.getCustomView();
LayoutParams lp = v.getLayoutParams();
lp.width = LayoutParams.MATCH_PARENT;
v.setLayoutParams(lp);

或者,您可以先设置没有 inflater 的操作栏布局:

ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.id.titlebar);
View v = actionBar.getCustomView();
// Do something to the view E.g Set button listeners blah //

// Rest of code

关于java - Android 自定义操作栏未填充父项,标题未居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387147/

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