扩展活动的标题不会出现在自定义样式中

时间:2012-01-06 04:20:30

标签: android android-activity

我以下列方式覆盖Activity类;

public class MyCustomActivity extends Activity {
 ...
 ...

}

public class MyActivity extends MyCustomActivity {
 ...
 ...

}

清单中的活动声明是这样的;

<activity
    android:name=".MyCustomActivity"
    android:label="@string/app_name" >
</activity>

<activity
    android:name=".MyActivity" 
    android:label = "ChildActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

我的问题是,android:label="ChildActivity"清单中定义的活动标题没有出现在自定义样式中。如果不在每个活动中调用setTitle(charSeq);,我怎么能让它显示出来?

修改

有一件事(可怕的事)我忘了提到的是我在以下方式使用自定义风格;

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/CustomTheme" >
 ...
 ...
</application>

编辑(在@Mudassir回答之后): 我正在使用的自定义标题栏布局如下所示;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:gravity="left"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/imageViewIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/vector_arts"
            android:layout_marginLeft="-15dp" />

        <TextView
            android:id="@+id/textTitleBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</RelativeLayout>

3 个答案:

答案 0 :(得分:2)

您获得与在活动标题中的清单文件中设置的标题相同的标题。 如果你喜欢这样:

<activity android:name=".MyActivity"
     android:label="ChildActivity"
             >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".TestingMyAcivity"></activity> 

public class TestingMyAcivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

}

public class MyActivity extends TestingMyAcivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.main_);
}

}

您在main_.xml文件中获得标题“ChildActivity”和布局。

答案 1 :(得分:2)

正如我理解您的问题,您正在使用文本视图(自定义样式)来显示标题文本。因此,要在自定义标题栏(文本视图)中显示默认标题文本(在android:label的清单中定义的文本),您必须覆盖父级(MyCustomActivity)中的方法setTitle,如下所示;

@Override
public void setTitle(CharSequence titleText) {

    // Assuming you text view's name is titleTextView in the style XML file
    TextView customTitle = (TextView) findViewById(R.id.titleTextView);
    customTitle.setText(titleText);
}

然后从同一类的onCreate()调用此方法,如下所示;

setTitle(getTitle());

这将获取清单文件中定义的活动标签,并将其传递给方法setTitle(),该方法将在自定义标题栏上显示为文本视图(此处为customTitle)。请注意,只有在使用文本视图显示标题文本时,此方法才有效。

答案 2 :(得分:1)

您正在启动MyActivity,其中您已将ChildActivity设为标题。 MyActivity是MyCustomActivity的子类。当你设置子类的标题时它就出现了。您所看到的活动实际上是Child Activity而不是Parent。因此,向您显示ChildActivity的标题

由于 Sunil Kumar Sahoo