2016-12-05 4 views
-2

В моем приложении значок будет загружаться динамически и автоматически помещаться в слот для значков. В настоящее время значок не изменяется, поэтому он увеличивает высоту ActionBar. Я использую SupportActionBar вместо ToolBar, потому что я просто мигрировал от Activity до AppCompatActivity и хотел как можно больше использовать его. Что можно сделать, чтобы автоматически установить значок на ActionBar?Android AppCompat SupportActionBar - как сделать значок автоподгонки до определенного размера

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/root_view_second_screen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    style="?wallpaper" 
    android:orientation="vertical" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    tools:context="com.sarkms.cclib.SecondScreen" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
     <ListView 
      android:id="@+id/convView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="10.0sp" 
      android:transcriptMode="normal" 
      android:smoothScrollbar="true" > 
     </ListView> 
     <TextView 
      android:id="@+id/lbl_MultiContactsPing_note" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="30dp" 
      android:padding="10dp" 
      android:background="@drawable/lightblue_rounded_poll_title_bg" 
      android:visibility="gone" 
      android:text="@string/lbl_multiplecontacts_ping_note"    
      android:textSize="20sp" 
      android:textStyle="italic" 
      android:textColor="@color/grey_dark" /> 
    </RelativeLayout>   
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15sp" 
     android:layout_marginBottom="15sp" > 

     <ImageView 
      android:id="@+id/emoticon_btn" 
      android:layout_width="30sp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:src="@drawable/smiley" /> 

     <ImageView 
      android:id="@+id/impMsg" 
      android:layout_width="12dp" 
      android:layout_height="25dp" 
      android:layout_gravity="bottom" 
      android:padding="4dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:background="@drawable/imp_msg_unselected_5" /> 

     <ImageView 
      android:id="@+id/Send" 
      android:src="@drawable/sendping_7" 
      android:layout_width="35sp" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="15sp" 
      android:layout_marginRight="15sp" 
      android:layout_gravity="bottom" /> 
    </LinearLayout>    

+0

Есть ли проблема с использованием 'ToolBar' с' AppCompatActivity'? –

+0

Он устанавливает значок прямо посередине, а не выравнивает его влево. Кроме того, мне придется добавить панель инструментов в каждый макет xml. Если бы я мог добиться этого изменения размера в SupportActionBar, я мог бы не касаться самого макета xml. –

+0

Можете ли вы разместить свой файл макета, который включает значок и панель действий? –

ответ

0

Информация, которую вы предоставили не достаточно, чтобы дать какой-либо точный ответ на вашу проблему. Но я полагаю, что у вас есть одно jpeg/png изображение, которое вы хотите зафиксировать в слоте значка. Одним из способов достижения этого является преобразование этого изображения в растровое изображение, а затем настройка высоты и ширины изображения.

Bitmap image = //load image from your source 
image = Bitmap.createScaledBitmap(image, iconSlotHeight, iconSlotWidth, true); 

Теперь используйте это растровое изображение, чтобы заполнить изображение в слот значка.

+0

Не существует способа, чтобы он автоматически масштабировался в слот значка? Как это случилось с ActionBar? –

+0

Я не знаю, что случилось с ActionBar. Я думаю, вам нужно настроить его в соответствии с размером экрана. Таким образом, вы можете использовать 'DisplayMetrices' для получения размера экрана, а затем управлять высотой и шириной в соответствии с вашими потребностями. – Shubham