my app supports all android versions from API Level 19. So, in one of the app's activity, called About Activity, I have code for two API Levels : post API-21 and before that (as seen in screenshot links below).
This is the code of activity_about.xml for API level 21+. As you can see in this image, the name shown on the action bar is "Simple Weather" (name of the app). And also there is no back button here, which I need a lot.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.a5corp.weather.AboutActivity">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/appName"
android:layout_centerHorizontal="true"
android:layout_marginBottom="13dp"
android:id="@+id/appIcon"
android:textAppearance="@android:style/TextAppearance.Material.Large"
android:textAlignment="center"
android:textColor="#ffbb33"
android:textSize="96sp" />
<TextView
android:text="@string/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/appName"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:text="@string/source_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="62dp"
android:id="@+id/sourceAt"
android:textAppearance="@android:style/TextAppearance.Material.Large"
android:layout_below="@+id/appName"
android:layout_centerHorizontal="true" />
<TextView
android:text="@string/dev_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:id="@+id/madeBy"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:layout_alignTop="@+id/appName"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/verText" />
This is the code of activity_about.xml for API Level below 21 (that means only level 19). As you can see in this image, there is a back button, and the name on the action bar is "About"
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.a5corp.weather.AboutActivity">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/appName"
android:layout_centerHorizontal="true"
android:layout_marginBottom="13dp"
android:id="@+id/appIcon"
android:textSize="96sp"
android:textAlignment="center"
android:textColor="#ffbb33" />
<TextView
android:text="@string/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/appName"
android:textSize="18sp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:text="@string/source_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="62dp"
android:id="@+id/sourceAt"
android:textSize="22sp"
android:layout_below="@+id/appName"
android:layout_centerHorizontal="true"
android:textColor="#000000" />
<TextView
android:text="@string/dev_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:id="@+id/madeBy"
android:layout_alignTop="@+id/appName"
android:layout_centerHorizontal="true"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/verText" />
I want to have something like this for activity_about.xml for API Level 21+ as well. Can this be possible?
Here's my Android Manifest File.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.a5corp.weather">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.a5corp.weather.GlobalActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".AboutActivity"
android:label="About"
android:parentActivityName="com.a5corp.weather.WeatherActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.a5corp.weather.WeatherActivity" />
</activity>
<activity
android:name=".WeatherActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
</activity>
<activity android:name=".FirstLaunch"
android:label="Enter City"/>
</application>
</manifest>
Thank you, Aaditya
If your AboutActivity
inherits from Activity
, try this:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
android.app.ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setTitle("my awesome title");
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Or else, if your AboutActivity
is a subclass of AppCompatActivity
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setTitle("my awesome title");
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
If neither works (ie ActionBar
is null), you'll have to configure the styles and features in your layout and Activity so you can obtain an ActionBar.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.