programing

활동 제목이 아닌 시작 프로그램에 대해 다른 레이블을 설정하는 방법은 무엇입니까?

lastmoon 2023. 8. 30. 22:00
반응형

활동 제목이 아닌 시작 프로그램에 대해 다른 레이블을 설정하는 방법은 무엇입니까?

이 질문은 이전에 제기된 적이 있지만 만족스러운 답변은 전혀 없습니다!그래서 다시 시도하고 있습니다.

프로그램 시작 아이콘(시작 화면에 표시되는 아이콘)에 다른 더 짧은 캡션을 지정합니다.런처는 다음과 같이 메인 페스트 섹션에서 메인 활동의 레이블에 대한 레이블을 가져온 것으로 보입니다.

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

여기서 앱 이름 @string/app_name에 대한 원래 참조를 다른 더 짧은 문자열 리소스로 변경했습니다.

BUT - BUT: 물론 이 활동의 기본 제목도 변경됩니다!그리고 저는 그런 일이 일어나지 않기를 바랬습니다. 긴 애플리케이션 이름을 위한 충분한 공간이 있습니다!긴 제목을 다시 설정하는 중onCreate 사용setTitle(int)짧은 이름은 짧은 시간 동안 사용자가 볼 수 있지만 인식할 수 있을 정도로 길기 때문에 메소드도 좋지 않습니다.

그리고 - 사용자 지정 제목 표시줄을 참조하여 제 질문에 대답하지 마십시오.난 그렇게 먼 길을 가고 싶지 않아, 단지 바보 같은 현 제목 때문에!효과가 거의 없는 맞춤형 제목 표시줄을 그리는 것은 고통입니다!

런처에 표시할 다른 문자열을 쉽게 지정할 수 있는 방법은 없습니까?답변 감사합니다!

편집: 사용자 지정 제목 표시줄이 문제가 되는 또 다른 이유는 기본 제목 표시줄처럼 보이지 않기 때문입니다. 각 장치에서 비슷하게 보이도록 명시적으로 작업을 수행해야 합니다.그리고 결국, 제가 다른 모습을 원하지 않는다면 그것은 해결책이 될 수 없습니다!

보하니아▁apparent.<intent-filter>레이블 특성을 가질 수 있습니다.레이블이 없으면 레이블은 상위 구성요소(활동 또는 응용프로그램)에서 상속됩니다.따라서 고유한 제목의 활동을 계속 유지하면서 시작 프로그램 아이콘의 레이블을 설정할 수 있습니다.

에뮬레이터에서는 작동하지만 실제 장치에서는 작동하지 않을 수 있습니다. 사용되는 시작 프로그램 구현에 따라 다르기 때문입니다.

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

사이드 참고: <intent-filter>도 아이콘 속성을 가질 수 있지만, 설명할 수 없이 활동에 지정된 아이콘을 재정의하지 않습니다.활동에 지정된 아이콘과 로고를 사용하는 SDK 11+의 기본 수행 표시줄을 사용하려는 경우 이 작업이 중요할 수 있습니다.

추가된 정보:레이블은 응용프로그램이 아닌 활동에서 상속됩니다.

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"       
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <activity
            android:name=".StartActivity"
            android:label="@string/app_long_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

이 경우 위와 같이 레이블을 내부에 넣지 않으면 app_long_name이 런처 아이콘과 함께 표시됩니다.

저는 같은 것을 찾고 있었고, 여기 제게 효과가 있었던 것이 있습니다.

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

응용 프로그램 시작 아이콘에 짧은 이름이 지정됩니다.

응용프로그램 표시줄에 더 큰 이름을 추가하려면 다음을 추가해야 합니다.

this.setTitle(getResources().getString(R.string.app_name));

기본 활동 Java 파일로 이동합니다.

(Nexus 4 및 Android 4.4 사용) Mark Renouf 솔루션이 실패했습니다.바로 가기를 사용할 때 실패하고, 바로 가기는 앱 이름 대신 주 활동 레이블을 사용합니다.저는 지메일과 구글 킵과 같은 앱들이 잘 작동하는 것을 보았습니다.그러나 당신이 그것들을 열었을 때, 나는 제목이 비어 있고 제목이 나타나는 순간과 같다는 것을 알아차렸습니다(이것은 setTitle()을 사용하여 제목을 설정하기 전에 앱 이름이 깜박이는 것보다 더 나은 것 같습니다).

제가 찾은 최고의 솔루션은 다음과 같습니다.

수행 표시줄에 제목/레이블이 표시되지 않는 스타일을 만듭니다.

<style name="NoActionBarTitle" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/NoActionBarTitle.ActionBar</item>
</style>

<style name="NoActionBarTitle.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">showHome|useLogo</item>
</style>

앱에 로고와 로고를 사용하기 때문에 탐색 드로어를 사용하고 있습니다.showTitle을 사용하지 않고 원하는 대로 사용할 수 있습니다.그런 다음 AndroidManifest.xml에서 기본 활동에 대한 테마를 설정합니다.

<activity
    android:name="com.xx.xxx.MainActivity"
    android:logo="@drawable/ic_icon_padding"
    android:theme="@style/NoActionBarTitle">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

그런 다음 기본 활동의 onCreate() 메서드에서 수행 표시줄의 제목을 설정합니다.

getActionBar().setTitle(R.string.your_title);

다음을 호출할 수 있습니다.

getActionBar().setDisplayShowTitleEnabled(true);

까다롭지만 가치가 있습니다.

이지만, 여러분은 (으로) 하는 스플래시 것에 요? 하지만 여러분은 아주 짧게 (기본 제목으로) 표시된 다음, 선택한 제목으로 새로운 실제 "주" 활동을 시작하는 스플래시 화면을 만드는 것에 대해 생각해본 적이 있습니까?setTitle(int)ㅠㅠ? 가 있는지 은 당신이 하고자 하는 않는 도 있습니다.저는 그것이 효과가 있는지 보려고 이것을 시도하지 않았지만 그것은 당신이 성취하려고 하는 것의 덜 매끄럽지 않은 본질을 보여주지 않는 즐거운 일을 만들어낼 수 있습니다.

를 통해 Support / Appcompat 도구 모음을 사용하는 모든 사용자에게 적합합니다.setSupportActionBar()제목은 XML "XML"에서할 수 .

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    app:title="@string/activity_title"
    ...
/>

그러면 매니페스트에 설정된 응용프로그램 및 활동 레이블이 재정의됩니다.

안드로이드의support.v7.vmdk입니다.도구 모음

는 이 문제에 .

manifest.xml

앱 이름을 다음에 적습니다.android:label실행기(주) 활동의.

이렇게 하면 주요 활동의 레이블이 앱 레이블의 레이블과 동일하게 됩니다.

그러면.onCreate()런처(주) 활동의 기능 이 문장 쓰기

if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle("main activity label");
        }

여기에 시작 프로그램(기본) 활동에 지정할 레이블을 작성합니다.

다음과 같은 작업을 수행할 수 있습니다.

public class FooBar extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // change title
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
    }
}

제목을 보관할 사용자 지정 레이아웃을 만들어야 합니다.다음과 같이 단순할 수 있습니다(라 함).my_title.xml이 경우):

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="foo bar"/>

당신의AndroidManifest.xml런처 아이콘에 표시될 앱의 제목을 설정하기만 하면 되는 파일입니다.활동의 경우 제목을 설정할 필요가 없습니다.

런처는 실제로 다음을 선언하는 활동에 대해 Android:label 및 Android:icon

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

따라서 응용 프로그램 레이블은 쓸모가 없습니다.

언급URL : https://stackoverflow.com/questions/3488664/how-to-set-different-label-for-launcher-rather-than-activity-title

반응형