Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从充气布局充气ListView/ExpandableListView_Android_Android Layout_Listview_Android Fragments_Expandablelistview - Fatal编程技术网

Android 从充气布局充气ListView/ExpandableListView

Android 从充气布局充气ListView/ExpandableListView,android,android-layout,listview,android-fragments,expandablelistview,Android,Android Layout,Listview,Android Fragments,Expandablelistview,让它更简单一点,让我们假设我有一个服务,它使用LayoutFlater从布局中为按钮充气。充气按钮显示在所有其他应用程序的上方(使用系统警报窗口权限),如下所示: 从主活动启动服务的代码: 活动\u main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation

让它更简单一点,让我们假设我有一个服务,它使用LayoutFlater从布局中为按钮充气。充气按钮显示在所有其他应用程序的上方(使用系统警报窗口权限),如下所示:

从主活动启动服务的代码:

活动\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Overlay"
        android:id="@+id/btn_start"
        android:layout_gravity="center_horizontal" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click"
        android:id="@+id/button_click"
        android:textColor="#ffffff" />
</LinearLayout>
服务代码:

ButtonOverlay.java

public class MainActivity extends AppCompatActivity {

    private Button btn_start;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_start = (Button) findViewById(R.id.btn_start);

        btn_start.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                startService(new Intent(MainActivity.this, ButtonOverlay.class));
            }
        });
    }
}
public class ButtonOverlay extends Service{

    private WindowManager wm;
    private LinearLayout ll;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        ll = new LinearLayout(this);

        LinearLayout.LayoutParams llParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        ll.setBackgroundColor(Color.argb(50, 255, 255, 255));
        ll.setLayoutParams(llParameters);

        final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
        parameters.x = 0;
        parameters.y = 0;
        parameters.gravity = Gravity.LEFT | Gravity.TOP;

        LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        ll = (LinearLayout) li.inflate(R.layout.activity_button, null);

        Button btn = (Button) ll.findViewById(R.id.btn_click);
        wm.addView(ll, parameters);
    }
}
包含充气按钮的布局:

活动按钮.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Overlay"
        android:id="@+id/btn_start"
        android:layout_gravity="center_horizontal" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click"
        android:id="@+id/button_click"
        android:textColor="#ffffff" />
</LinearLayout>

现在我要做的是为按钮
btn\u click
设置一个onClickListener,这样当您点击它时,另一个具有listView或更好的expandableListView的布局就会膨胀。 以下是我需要的纯文本视图:

但是我不知道如何使用列表视图可扩展列表视图,因为它们更复杂。
我这样做是否正确?
我应该如何构造代码,使其保持干净,使用多个重叠的按钮,这些按钮可以膨胀不同的布局(例如,
button1
显示如上图所示的纯文本,
button2
显示列表视图,
button3
显示图像视图)

编辑1:

我看过一个
expandableListView
,把它作为一个独立的项目来使用是没有问题的。我试图将这个确切的示例夸大为浮动窗口jst,如
plainTextView
,但我不知道应该将代码放在
onCreate
方法中的何处。有什么想法吗