web-dev-qa-db-ja.com

Androidのカードビュー内に3つのドットがある小さなウィジェットの名前は何ですか?

enter image description here

3つの点がある小さなウィジェットは何ですか?アプリに追加するにはどうすればよいですか?

37
Cristian

これはウィジェットではありません。 ImageButtonを含むオーバーフローアイコンを使用するPopupMenu(スタイルはボーダーレス)です

ドキュメントチュートリアルの訪問については、 http://developer.Android.com/guide/topics/ui/menus.html#PopupMen

これは、上記のリンクからの素敵なコードスニペットを指します。

  <ImageButton
       Android:layout_width="wrap_content" 
       Android:layout_height="wrap_content" 
       Android:src="@drawable/ic_overflow_holo_dark"
       Android:contentDescription="@string/descr_overflow_button"
       Android:onClick="showPopup" />

次に、ポップアップを表示するために使用します。

 public void showPopup(View v) {
     PopupMenu popup = new PopupMenu(this, v);
     MenuInflater inflater = popup.getMenuInflater();
     inflater.inflate(R.menu.actions, popup.getMenu());
     popup.show();
 }

3-DotsボタンはAndroid Studio:のアセット間で利用可能です

resを右クリック->新規作成->ベクターアセット->アセットタイプ=クリップアート

->クリップアートの横にあるボタンをクリックします:ラベル->more vertを検索

enter image description here

50
kandroidj

ImageButtonスタイル属性でactionOverflowButtonStyleを使用することもできます。

<ImageButton
    Android:layout_width="wrap_content" 
    Android:layout_height="wrap_content" 
    style="?android:attr/actionOverflowButtonStyle"/>
35
Nit

「オリジナル」の3ドットウィジェットはAndroid.widget.ActionMenuPresenter.OverflowMenuButtonActionMenuPresenter.Java )。悲しいことに、プライベートクラスです。ここで動作する短いバージョン:

public class OverflowMenuButton extends AppCompatImageView
{
    public OverflowMenuButton(Context context)
    {
        this(context, null);
    }

    public OverflowMenuButton(Context context, AttributeSet attrs)
    {
        this(context, attrs, 0);
    }

    public OverflowMenuButton(Context context, AttributeSet attrs, int defStyleAttr)
    {
        super(new ContextThemeWrapper(context, R.style.OverflowButtonTheme), attrs, R.attr.actionOverflowButtonStyle);

        setClickable(true);
        setFocusable(true);
        setVisibility(VISIBLE);
        setEnabled(true);
    }
}

ContextThemeWrapperのテーマは、暗いバージョンと明るいバージョンを取得します。

<!--White dots theme-->
<style name="OverflowButtonTheme" parent="@style/Theme.AppCompat">
    <item name="actionOverflowButtonStyle">@style/Widget.AppCompat.ActionButton.Overflow</item>
</style>

<!--Dark dots theme-->
<style name="OverflowButtonThemeLight" parent="@style/Theme.AppCompat.Light">
    <item name="actionOverflowButtonStyle">@style/Widget.AppCompat.Light.ActionButton.Overflow</item>
</style>
3
user1185087
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:width="24dp"
    Android:height="24dp"
    Android:viewportWidth="24.0"
    Android:viewportHeight="24.0">
    <path
        Android:fillColor="#FF000000"
        Android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zm0,2c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zm0,6c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
</vector>
1

Webで見つけたように、「オーバーフローアイコン」または「アクションオーバーフロー」と呼ばれます。

このコードが役に立つかもしれません。 (コードは there からのものです)

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >

    <item
        Android:id="@+id/menu_red"
        Android:orderInCategory="1"
        Android:showAsAction="never"
        Android:title="@string/red_string"/>
    <item
        Android:id="@+id/menu_green"
        Android:orderInCategory="2"
        Android:showAsAction="never"
        Android:title="@string/green_string"/>
</menu>
0
scummy