質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

button

HTMLで用いる<button>タグです。

Q&A

2回答

1509閲覧

[Android]アプリ一覧の最下部にボタンを追加したい

rick

総合スコア18

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

button

HTMLで用いる<button>タグです。

0グッド

0クリップ

投稿2018/03/21 02:33

編集2018/03/24 12:58

前提・実現したいこと

androidでアプリ一覧を作成しており、最下部にアプリ一覧とは別のボタンを配置しようとしています。
ところがボタンを配置したところ、一覧のすべてにボタンが重なって付与されてしまいます。
(リスト一覧の部品の一部としてボタンが扱われているように見えます。)
リスト一覧とは別に、最下部にボタンを配置する方法はありますでしょうか?3日くらい悩んでいるので、助けて頂ければ嬉しいです。

(item_list.xmlというアイテム用のレイアウトファイルを別途作成し、それをactivity_main.xmlのlistViewに渡しています。
アプリ一覧のリストは、listViewとArrayAdapterを使用して実装しております。)

LancherApp.java

public class LancherApp extends Activity { @Override protected void onCreate (Bundle bundle) { super.onCreate (bundle); requestWindowFeature (Window.FEATURE_NO_TITLE); setContentView (R.layout.activity_main); // Get installed app info from device. PackageManager packageManager = getPackageManager(); final List<ApplicationInfo> installedAppList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); // Stack data to list. final List<AppData> appList = new ArrayList<AppData>(); for (ApplicationInfo app : installedAppList) { AppData data = new AppData(); data.label = app.loadLabel(packageManager).toString(); data.icon = app.loadIcon(packageManager); data.name = app.packageName; appList.add (data); } // Show app list to listview. ListView listView = new ListView(this); listView = (ListView) findViewById(R.id.card_list); ViewGroup parentView = (ViewGroup) listView.getParent(); if (parentView != null) { parentView.removeView(listView); } listView.setAdapter(new ApplicationListAdapter(this, appList)); setContentView(listView); } private static class ApplicationListAdapter extends ArrayAdapter<AppData> { // private final LayoutInflater mInflater; public ApplicationListAdapter (Context context, List<AppData> dataList) { //super(context, R.layout.activity_main); super(context, 0); mInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); addAll(dataList); } @Override public View getView (int position, View convertView, ViewGroup parent) { ViewHolder holder = new ViewHolder(); if (convertView == null) { convertView = mInflater.inflate(R.layout.item_list, parent, false); holder.textLabel = (TextView) convertView.findViewById(R.id.label); holder.imageIcon = (ImageView) convertView.findViewById(R.id.icon); holder.packageName = (TextView) convertView.findViewById(R.id.name); ViewGroup parentView = (ViewGroup) convertView.getParent(); if (parentView != null) { parentView.removeView(convertView); } convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // Get data to show. final AppData data = getItem(position); // Set label & icon to listview. holder.textLabel.setText(data.label); holder.imageIcon.setImageDrawable(data.icon); holder.packageName.setText(data.name); return convertView; } } // final AppData data = getItem(position); // holder.textLabel.setText(data.label); holder.imageIcon.setImageDrawable(data.icon); holder.packageName.setText(data.name); // private class for storing application data. private static class AppData { String label; Drawable icon; String name; } // private class ViewHolder. private static class ViewHolder { TextView textLabel; ImageView imageIcon; TextView packageName; }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="50dp" android:gravity="center" android:text="Button" /> <ListView android:id="@+id/card_list" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </LinearLayout>

item_list.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/icon" android:layout_width="50dp" android:layout_height="50dp" android:layout_below="@+id/button" /> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button" android:layout_toRightOf="@+id/icon" android:textSize="18sp" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/label" android:layout_below="@+id/label" /> </RelativeLayout>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakajika

2018/03/21 06:20

ApplicationListAdapterというクラスのソースコードはありますか?そちらも貼ってもらえると回答しやすいです。
guest

回答2

0

java

1convertView = mInflater.inflate(R.layout.activity_main, parent, false);

こちらのコードを見る限り、Activity用に用意したレイアウトをListViewのアイテムのレイアウトとして使っているようです。アイテム用のレイアウトファイルを別途作成して、それを渡すようにしてみてください。

投稿2018/03/23 14:00

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rick

2018/03/24 12:47

item_list.xmlというアイテム用のレイアウトファイルを別途作成し、 それを渡すようにしたところ、アプリ一覧の表示はできました。 (item_list.xmlには、activity_main.xml内にあったImageView、TextViewを移動) ただこれまでリスト内にあった《+》ボタンが無くなってしまいました。。。 色々お時間を使って頂いており申し訳ありません。。 出来ましたら《+》ボタンを表示する方法をご教授頂ければ幸いです・・ 上記修正に関連して、LancherApp.javaで修正した箇所です。 ・LancherApp内にて、id:card_listのlistViewを取得する行を追加 ・ApplicationListAdapter.getView()内にて、convertViewにitem_list.xmlを設定 activity_main.xml ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="50dp" android:gravity="center" android:text="Button" /> <ListView android:id="@+id/card_list" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </LinearLayout> ``` item_list.xml ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginTop="50dp" android:layout_marginLeft="100dp"> <ImageView android:id="@+id/icon" android:layout_width="50dp" android:layout_height="50dp" android:layout_below="@+id/button" /> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button" android:layout_toRightOf="@+id/icon" android:textSize="18sp" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/label" android:layout_below="@+id/label" /> </RelativeLayout> ```
rick

2018/03/24 12:48

↑すみません、(```)が効かないんですね・・
rick

2018/03/24 12:56

質問を上げた際のコードに、上記添付したコードを反映させて頂きました。よろしくお願い致します。
kakajika

2018/03/24 13:44

うーんと、どの《+》ボタンのことなのか分かりませんが、item_list.xmlの中にButtonが見当たらないようなので追加すればよいのではないでしょうか?
guest

0

>kakajikaさん

ご返信ありがとうございます。
ApplicationListAdapterのコードを添付させていただきます。


// private Adapter Class indicates label and icon of application. private static class ApplicationListAdapter extends ArrayAdapter<AppData> { // private final LayoutInflater mInflater; public ApplicationListAdapter (Context context, List<AppData> dataList) { super(context, R.layout.activity_main); mInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); addAll(dataList); } @Override public View getView (int position, View convertView, ViewGroup parent) { ViewHolder holder = new ViewHolder(); if (convertView == null) { convertView = mInflater.inflate(R.layout.activity_main, parent, false); holder.textLabel = (TextView) convertView.findViewById(R.id.label); holder.imageIcon = (ImageView) convertView.findViewById(R.id.icon); holder.packageName = (TextView) convertView.findViewById(R.id.name); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // final AppData data = getItem(position); // holder.textLabel.setText(data.label); holder.imageIcon.setImageDrawable(data.icon); holder.packageName.setText(data.name); return convertView; } } // private class for storing application data. private static class AppData { String label; Drawable icon; String name; } // private class ViewHolder. private static class ViewHolder { TextView textLabel; ImageView imageIcon; TextView packageName; }

投稿2018/03/21 14:06

rick

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakajika

2018/03/23 06:09

質問のコードを追加する場合は、質問自体を編集するようにしてもらえますでしょうか?回答の方ですと通知が来ないので気づきませんしそもそも回答に書くべきではありません。また、ソースコードはバッククォート3つ(```)で囲むなどして読みやすいようにしてください。
rick

2018/03/23 12:49

コードを見やすくする書き方を存じ上げておらず、大変失礼致しました。 編集をさせて頂きました。また、回答へ記載したArrayAdapterのコードも入れました。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問