0

enter code here Я нашел похожие вопросы по переполнению стека, но не смог найти решение. Я новичок в android. У меня есть панель инструментов, и я пытаюсь реализовать кнопку «Мне нравится» на панели инструментов. В основном в представлении viewPager я показываю пользователю некоторую цитату, и если пользователю нравится, то они могут нажать на кнопку на панели инструментов. Позже я планирую реализовать функциональность, которую пользователь сможет найти в своих котировках «Likes». У меня есть следующие вопросы:Панель инструментов Android: нажмите на изображение. Баттон не остается таким же.

  • 1) Это правильный способ сделать это? Я имею в виду, должен ли я поставить кнопку изображения на панели инструментов, а затем обрабатывать клики?
  • 2) Прямо сейчас, когда я нажимаю на кнопку «Мне нравится», он меняется на «Темно- », но затем он сразу возвращается к границе сердца. Я хочу, чтобы он оставался темным, пока пользователь не нажмет на него.
  • 3) Любая ссылка на аналогичный пример будет очень полезной.

и панель инструментов:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/quote_reader_toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimary" 
    android:titleTextColor="#ffffff"> 

    <ImageButton 
     android:id="@+id/btnLike" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/btn_feed_action" 

     /> 

</android.support.v7.widget.Toolbar> 

Наконец, с одой обрабатывать IMAGEBUTTON Нажмите:

public void addListenerOnButton() { 

    likeButton = (ImageButton) findViewById(R.id.btnLike); 

    likeButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Log.d(TAG, "Like bUTTON pRESSED"); 

     } 

    }); 

} 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/ic_favorite_black_24dp" /> <!-- pressed --> 
<item 
    android:drawable="@drawable/ic_favorite_border_black_24dp" /> <!--  default --> 
</selector> 

ответ

0

Try, как это ...

public void addListenerOnButton() { 

    likeButton = (ImageButton) findViewById(R.id.btnLike); 

    likeButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Log.d(TAG, "Like bUTTON pRESSED"); 
      likeButton.setBackgroundResource(R.drawable.ic_favorite_black_24dp); 
     } 

    }); 

} 

или вы также можете создать форму button_pressed.xml

Например

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <solid android:color="@color/grey" /> 

    <stroke 
     android:width="xxdp" 
     android:color="@color/grey" /> 

    <padding 
     android:bottom="xx dp" 
     android:left="xx dp" 
     android:right="xx dp" 
     android:top="xx dp" /> 

</shape> 

, а затем

Drawable dr = getResources().getDrawable(R.drawable.button_pressed); 

    likeButton.setBackgroundDrawable(dr); 
0

Объявить ImageButton с Toolbar, как это вид корня

likeButton = (ImageButton) toolbar.findViewById(R.id.btnLike); 
+0

Ну это работает частично, я хочу, чтобы вернуться назад, если пользователь по умолчанию состояния снова нажимает. Также этот киннда делает «селектор» ненужным. Я думал, что селектор делает это, как в моем коде выше. – Arp

1

Ну, на ваш второй вопрос, нет, это не правильный путь. Зачем? Потому что опция state_pressed="true" означает, что вы нажимаете кнопку и KEEP PRESSING IT, после того, как вы прекратите ее нажимать, она просто переходит в состояние по умолчанию.

Как это сделать? Вы можете сделать это легко из кода изменения фона ресурса в методе OnClick, как это:

YOURBUTTON.setBackgroundResource(YOUR_IMAGE); 

Надеется, что это помогает :)

+0

Ну, это работает частично, я хочу, чтобы он вернулся к состоянию по умолчанию, если пользователь снова нажимает его. Также этот киннда делает «селектор» ненужным. Я думал, что селектор делает это, как в моем коде выше. – Arp

+0

Если вы хотите, чтобы он возвращался так же просто, как в методе «onclick», получите имя ресурса изображения и «если он один, измените на два», «если это два, измените его на один». Я не знаю, поняли ли вы. В любом случае вы можете попытаться изменить state_pressed = "true" для "state_checked" – Alejandro93sa

+0

Это сработало. – Arp

 Смежные вопросы

  • Нет связанных вопросов^_^