【问题标题】:Android xml layout with list view and edit text带有列表视图和编辑文本的 Android xml 布局
【发布时间】:2013-10-27 15:49:47
【问题描述】:

我有一个框架布局,其中有一个列表和一个编辑文本以及两个按钮,它的 xml 是:

<?xml version="1.0" encoding="utf-8"?>
   <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

      <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="86dp"
    android:layout_gravity="bottom" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="Send" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/button1"
        android:ems="10" />

    <Button
        android:id="@+id/button2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

  </RelativeLayout>

  <ListView
      android:id="@android:id/list"
      android:layout_width="match_parent"
      android:layout_height="317dp" >

  </ListView>

        </FrameLayout>

布局看起来像这样:

我想将标题为“按钮”的按钮放在列表视图上方,那么我应该做些什么来实现这一点??

谢谢,向塔利卜致敬。

【问题讨论】:

    标签: android xml android-layout android-linearlayout android-framelayout


    【解决方案1】:

    我可能会改用线性布局:

    <?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/button2"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
    
        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </ListView>
    
        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal">
    
            <EditText
                android:id="@+id/editText1"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/button1"
                android:ems="10" />
    
            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Send" />
        </LinearLayout>
    
    </LinearLayout>
    

    输出如下:

    【讨论】:

    • 当我运行它时,它会在主要活动中给我 NPE
    • logcat 是 :10-27 23:59:48.334: E/AndroidRuntime(12945): java.lang.RuntimeException: 无法启动活动 ComponentInfo{soft.b.peopleassist/soft.b.peopleassist .MainActivity}: java.lang.NullPointerException
    • 你能发布整个 logcat 吗? (将其添加到问题中)
    【解决方案2】:

    我不确定您是否真的需要FrameLayout,但根据您的要求,这可能更有效。

    <?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" >
    
        <Button
            android:id="@+id/button2"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="Button" />
    
        <ListView
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/button1"
            android:layout_below="@+id/button2" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:text="Send" />
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@+id/button1" />
    
    </RelativeLayout>
    

    【讨论】:

    • 运行代码编辑文本时出现错误,为什么会这样?
    • log cat is :10-27 23:58:14.559: E/AndroidRuntime(12056): java.lang.RuntimeException: Unable to start activity ComponentInfo{soft.b.peopleassist/soft.b. peopleassist.MainActivity}:java.lang.ClassCastException:android.widget.Button 不能转换为 android.widget.EditText
    • 您是否尝试将Button 转换为EditText?确保在声明变量时,它们与布局中声明的小部件类型相同。 Button btSend = (Button) findViewById(R.id.button1);, EditText et1 = (EditText) findViewById(R.id.editText1);.
    【解决方案3】:
    // try this
    <?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/button2"
            style="?android:buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
    
        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </ListView>
    
        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal">
    
            <EditText
                android:id="@+id/editText1"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/button1"
                android:ems="10" />
    
            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Send" />
        </LinearLayout>
    
    </LinearLayout>
    
    public class MainActivity extends ListActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多