2 votes

Comment augmenter la largeur des éléments de menu dans Android en utilisant la barre d'action ?

J'ai un problème pour augmenter la largeur de l'élément de menu dans la barre d'action, il prend la largeur fixe. Voici une capture d'écran,

enter image description here

et souhaite obtenir le résultat ci-dessous,

enter image description here

Voici le code :

search_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:background="@drawable/search_view_background"
    android:layout_width="match_parent"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:layout_height="wrap_content">
    <TextView android:layout_width="0dp"
    android:padding="10dp"
    android:layout_weight="1"
    android:text="Search Product"
    android:textColor="@color/grey"
    android:gravity="center_vertical"
    android:drawableEnd="@drawable/ic_search"
    android:drawableRight="@drawable/ic_search"
    android:drawablePadding="20dp"
    android:textSize="@dimen/text_size_14sp"
    android:layout_height="match_parent"/>
</LinearLayout>

menu_home.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/search"
android:onClick="onClickSearchButton"
android:orderInCategory="1"
android:title="@string/Search"
app:actionLayout="@layout/search_layout"
app:showAsAction="always"/>
<item
android:id="@+id/action_cart"
android:icon="@drawable/ic_menu_cart"
android:orderInCategory="2"
android:title="@string/action_cart"
app:showAsAction="always"/>

<item
android:id="@+id/overflow"
android:icon="@drawable/ic_menu_notifications"
android:orderInCategory="3"
android:title="@string/overFlowMenu"
android:visible="false"
app:showAsAction="always"/>

Veuillez nous faire part de vos suggestions pour résoudre ce problème.

Gracias

3voto

aastha gupta Points 163

Il l'a fait avec un Hack.

Je sais que ce n'est pas la meilleure solution, ni même une bonne solution, mais je l'ai fait avec un hack.

searchItem.getActionView().findViewById(R.id.text).setMinimumWidth(width);

Vous pouvez donner une largeur particulière à la vue afin qu'elle prenne au moins cet espace.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X