Get an ActionBar Textview in Android

According to the title, I need to retrieve the textview of the activity title that appears in the ActionBar. I can use the following method to get the ActionBar view:

private View getActionBarView() {
View v = mWindow.getDecorView();
int resId = getResources().getIdentifier("action_bar_container", "id", "android");
return v.findViewById(resId);
}

Does anyone know the id of the TextView, so I can find the ViewById in the actionbar view?

Solved:
Okay, I used the same method to solve it but by changing the id:

private TextView getActionBarTitle() {
View v = mWindow.getDecorView();
int resId = getResources().getIdentifier("action_bar_title", "id", "android");
return v.findViewById(resId);< br />}

All built-in Android layouts can be found in the SDK:

< /p>

.../android-sdk/platforms/android-/data/res/layout/

I think in this situation The next thing you are looking for is action_bar_title_item.xml.
This is v19:

< br />

android:layout_width= "wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:orientation="vertical"
android:paddingEnd="8dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end" />
android:layout_width="wrap_conte nt"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/action_bar_subtitle_top_margin"
android:singleLine="true"
android:ellipsize="end"< br /> android:visibility="gone" />

The layout can be different between API versions. Generally speaking, the ID will match, but I can’t say This is true for every layout, and if you plan to use specific built-in resources in this situation, it is best to quickly check the differences in each.

For this, you must obtain the source code Copy each to view each API version.
This can be done in the following ways:

>Your IDE: Use the IDE (Eclipse or AndroidStudio) selected for you by the ADT plugin for Android
> Manual method: call the version of the SDK yourself, which is located in the SDK:

… /Android SDK/Tools/Android

You obviously only need to grab the version you support, as As I mentioned above, each version has its own folder, named after its single int version number. For example:

.../android-sdk/platforms/ android-19/data/res/layout/action_bar_title_item.xml
.../android-sdk/platforms/android-15/data/res/layout/action_bar_title_item.xml
.../android- sdk/platforms/android-11/data/res/layout/action_bar_title_item.xml
.../android-sdk/platforms/android-10/data/res/layout/???

Uh, oh! There is no API-10 layout. If you want to use the action_bar_title_item.xml layout in this API version, you can include and use Sherlock ActionBar, or you can copy or modify the v11 layout to:

.../YourApp/res/layout-v10/action_bar_title_item.xml (Eclipse)
.../YourApp/app/src/main/res/layout-v10/action_bar_title_item.xml (Android Studio)

Your call. You only need to customize the layout. Copy the Android built-in version to your own layout folder and adjust it to your heart's content. Please pay attention to the folder where the files are placed so that they Overwrite the correct version required.

According to the title, I need to retrieve the textview of the activity title that appears in the ActionBar. I can use the following method to get the ActionBar view:

private View getActionBarView() {
View v = mWindow.getDecorView();
int resId = getResources().getIdentifier("action_bar_container", "id", "android");
return v.findViewById(resId);
}

Does anyone know the id of the TextView, so I can find the ViewById in the actionbar view ?

Solved:
Okay, I used the same method to solve it but by changing the id:

private TextView getActionBarTitle() {
View v = mWindow.getDecorView();
int resId = getResources().getIdentifier("action_bar_title", "id", "android");
return v.findViewById(resId);< br />}

All built-in Android layouts can be found in the SDK:

.../android-sdk/platforms/android-/data/res/layout/

I think what you are looking for in this case is action_bar_title_item.xml.
This is v19:


Leave a Comment

Your email address will not be published.