我以下列方式覆盖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>
答案 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