0

我创建了一个显示完美的简单自定义标题。但是,我不确定要为我的 TextView 提供什么 id 才能使 setTitle 方法发挥其魔力。

我的第一选择是@android:id/title,但这不起作用。

示例 我在 xml 中定义了一个自定义标题布局并将其添加到我的活动中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_title"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/transparent" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:scaleType="centerInside"
        android:onClick="home"
        android:src="@drawable/logo" />

    <TextView
        android:id="@android:id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="18dp"
        android:textStyle="bold"
        android:layout_centerVertical="true"
        android:text="TextView" />
</RelativeLayout>

TextView 现在是“标题”容器。我想要的是清单中的 android:label 值自动放入这个新标题 TextView 中。

IE。默认方法 setTitle 必须将此值添加到某些已定义的视图 ID - 我只需要该 ID。

4

2 回答 2

2

setTitle 设置活动的标题,它与TextView 无关,您需要使用setText() 来设置TextView 的文本:

((TextView)findViewById(R.id.text_view_id)).setText("TextView text");

编辑:检查此解决方案->如何在 android 中动态设置自定义标题栏 TextView 值?

于 2012-05-22T11:58:18.950 回答
1

我必须创建一个带有自定义标题的类似功能。我非常怀疑您是否能够通过匹配 id 来做到这一点,如果 Android 允许这样做,那将是一个巨大的安全漏洞。我所做的是扩展 Activity,然后以类似...的方式覆盖 setTitle 方法

TextView mCustomTitle;

@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.myLayout);
     mCustomTitle = (TextView)findViewById(R.id.title);
}

@Override
public void setTitle(CharSequence title) {
    //you can override the other setTitle as well if you need it
    mCustomTitle.setText(title);        
}
于 2012-05-24T08:03:21.837 回答