Ionic 4 更改带有自定义图标的 ion-tab-button

Sno*_*ses 4 javascript ionic-framework angular ionic4

单击ion-icon后,我尝试使用自定义 src进行更改ion-tab-button

我尝试过的,使用 (click) 事件触发功能并更改离子图标内的 [src]="..."

有什么合适的方法可以改变这种黑客风格吗?

HTML:

 <ion-tabs>
  <ion-tab-bar slot="bottom">
    <ion-tab-button tab="news/home" (click)="changeNewsIcon()">
      <ion-icon [src]="newsIcon"></ion-icon>
      <ion-label class="tab-title">News</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="user" (click)="changeSearchIcon()">
      <ion-icon [src]="searchIcon"></ion-icon>
      <ion-label class="tab-title">Search</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="networking" (click)="changeNetworkIcon()">
      <ion-icon [src]="notiIcon"></ion-icon>
      <ion-label class="tab-title">Networking</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="chat" (click)="changeChatIcon()">
      <ion-icon [src]="chatIcon"></ion-icon>
      <ion-label class="tab-title">Chat</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="profile" (click)="changeProfIcon()">
      <ion-icon [src]="profIcon"></ion-icon>
      <ion-label class="tab-title">Profile</ion-label>
    </ion-tab-button>
  </ion-tab-bar>
</ion-tabs>
Run Code Online (Sandbox Code Playgroud)

TS :

newsIcon = './assets/tabs/home.svg';
searchIcon = './assets/tabs/search.svg';
notiIcon = './assets/tabs/group.svg';
chatIcon = './assets/tabs/chat.svg';
profIcon = './assets/tabs/user.svg';

changeNewsIcon(): void {    
  // change news icon
  this.newsIcon = './assets/tabs/clicked-home.svg';

  // reset others icon
  this.searchIcon = './assets/tabs/search.svg';
  this.notiIcon = './assets/tabs/group.svg';
  this.chatIcon = './assets/tabs/chat.svg';
  this.profIcon = './assets/tabs/user.svg';
}

changeSearchIcon(): void {
  // change user icon
  this.searchIcon = './assets/tabs/clicked-search.svg';

  // reset others icon
  this.newsIcon = './assets/tabs/home.svg';
  this.notiIcon = './assets/tabs/group.svg';
  this.chatIcon = './assets/tabs/chat.svg';
  this.profIcon = './assets/tabs/user.svg';
}

...
Run Code Online (Sandbox Code Playgroud)

感谢有人会帮忙

Ank*_*ain 6

我不确定我的方法是否更好,但这可能是做同样事情的另一种方式。

HTML:

<ion-tabs>
    <ion-tab-bar slot="bottom">
      <ion-tab-button tab="news/home" (click)="changeNewsIcon()">
        <ion-icon [src]="isNewsSelected ? newsIcon : clickedNewsIcon"></ion-icon>
        <ion-label class="tab-title">News</ion-label>
      </ion-tab-button>
      <ion-tab-button tab="user" (click)="changeSearchIcon()">
        <ion-icon [src]="isSearchSelected ? searchIcon clickedSearchIcon"></ion-icon>
        <ion-label class="tab-title">Search</ion-label>
      </ion-tab-button>
    </ion-tab-bar>
</ion-tabs>
Run Code Online (Sandbox Code Playgroud)

打字稿组件:

export class SomeComponent {

  newsIcon = './assets/tabs/home.svg';
  clickedNewsIcon = './assets/tabs/clicked-home.svg';
  searchIcon = './assets/tabs/search.svg';
  clickedSsearchIcon = './assets/tabs/clicked-search.svg';

  isNewsSelected = false;
  isSearchSelected= false;

  changeNewsIcon(): void {    
    resetAll();
    this.isNewsSelected = true;
  }

  changeSearchIcon(): void {
   resetAll();
   this.isSearchSelected = true;
  }

  resetAll(){
    this.isNewsSelected = false;
    this.isSearchSelected= false;
  }
}
Run Code Online (Sandbox Code Playgroud)


Sno*_*ses 5

之前,我尝试将 css 颜色放入ion-tab-buttonion-icon使用离子图标。颜色按预期变化,但不是自定义图标。

<ion-tab-button tab="news/home" style="color: blue">
  <ion-icon name="home"></ion-icon>
  <ion-label class="tab-title">News</ion-label>
</ion-tab-button>
Run Code Online (Sandbox Code Playgroud)

一天后,我尝试检查如果我们喜欢这种方法,为什么自定义图标不会改变颜色。然后我尝试检查 Adob​​e Illustrator CC 中的 Ionic SVG 图标层。就是这样。

在此处输入图片说明

如您所见,<path>在第 1 层内部(离子图标)

在此处输入图片说明

问题是我的 SVG 文件。为了使这个与 css 属性一起工作,我只需要编辑图层。

在此处输入图片说明

在此处输入图片说明

这是编辑图层后的结果,按预期工作:)

在此处输入图片说明

解决方案:你只需要添加颜色css并获得正确的图层SVG图标

此外,我将在选项卡处于活动状态时更新如何使用自定义图标。

更新 2:

这是工作的 html 代码:

<ion-tabs>
  <ion-tab-bar class="tab-bar" slot="bottom">
    <ion-tab-button tab="news/home">
      <ion-icon class="icon-news" src="./assets/tabs/md-custom-home.svg"></ion-icon>
      <ion-label class="tab-title">News</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="search">
      <ion-icon class="icon-search" src="./assets/tabs/md-custom-search.svg"></ion-icon>
      <ion-label class="tab-title">Search</ion-label>
    </ion-tab-button>
    <ion-tab-button tab="networking">
      <ion-icon class="icon-networking" src="./assets/tabs/md-custom-networking.svg"></ion-icon>
      <ion-label class="tab-title">Networking</ion-label>
    </ion-tab-button>
  </ion-tab-bar>
</ion-tabs>
Run Code Online (Sandbox Code Playgroud)

社会保障:

ion-tab-button {
  --color: #000000;
  --color-selected: #00cee5;
}
Run Code Online (Sandbox Code Playgroud)

只要确保使用正确的 SVG ;)

  • 对我来说必须进行颜色工作的有效方法是在记事本中编辑 svg 文件并确保没有设置“填充”属性。无需在 AI 中进行编辑。 (3认同)