【问题标题】:Android - Centering button background in ListviewAndroid - Listview 中的居中按钮背景
【发布时间】:2015-06-25 20:52:37
【问题描述】:

我不明白发生了什么,我已经做了好几个小时了。我有一个带有适配器的按钮 ListView。我为按钮设置了背景,但按钮不想与 listView 的中间对齐,而是向左对齐。所有布局重力和重力设置都适用于按钮的标题文本,而不是按钮本身。无论如何我可以将背景按钮或整个按钮对齐到listView的中间吗? 这是我的相关代码

sports_list.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
       style="@style/SportsList"
       android:id="@+id/sport_item"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:paddingTop="15dp"
       android:paddingBottom="15dp"
       android:layout_gravity="center"/>

styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!--<item name="android:background">@drawable/default_background</item> -->
</style>

<style name="SportsList" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:background">@drawable/custom_button</item>
    <item name="android:textSize">20dp</item>
    <item name="android:textColor">#fff</item>
</style>

</resources>

activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingTop="15dp"
         android:paddingLeft="15dp"
         android:paddingRight="15dp"
         tools:context=".MainActivity"
         android:orientation="vertical"
         android:gravity="center"
         android:background="@drawable/default_background">

        <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textAppearance="?android:attr/textAppearanceLarge"
          android:text="@string/choose"
          android:textColor="#fff"
          android:layout_gravity="center"/>

        <ListView
          android:id="@+id/list_view_sports"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:divider="@android:color/transparent"
          android:layout_marginTop="30dp"
          android:dividerHeight="30dp"
          android:layout_gravity="center_horizontal" />
 </LinearLayout>

也是我的 mainactivity.java 中唯一重要的部分

public static ArrayAdapter adapter;
String[] sports = {"Baseball", "Football", "Soccer"};

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

    adapter = new ArrayAdapter(
            this,
            R.layout.sports_list,
            R.id.sport_item,
            sports);

    ListView listView = (ListView) findViewById(R.id.list_view_sports);
    listView.setAdapter(adapter);
}

我想使按钮居中

【问题讨论】:

  • 添加sports_list.xml
  • 它已经添加了。它是主要的,这就是被调用的布局

标签: java android listview button


【解决方案1】:

尝试为您的按钮添加属性layout_gravity: center

如果这不起作用,您可以将 LinearLayout 更改为相对布局,然后使用 android:layout_centerInParent="true" 属性将按钮居中。

这是一个link 的答案,应该可以帮助你。

您可能需要为您的按钮/文本视图添加一些属性,以使它们看起来像您想要的那样(就像它们在线性布局中所做的那样)。我建议使用layout_below 属性让事物按照您想要的方式垂直排列。

【讨论】:

  • 这也不起作用,我到处查看,也发现了那个链接,但没有起作用。我的信念是 ListView 正在居中,但里面的内容不是。
  • 你尝试过使用RelativeLayout吗?
  • 是的,android:layout_centerInParent="true" 仍然没有
  • 但是真正奇怪的是在sport_list.xml的预览中,按钮会居中,但是在手机运行时,它没有居中,它向左移动
  • 这很奇怪。您是否在运行时以编程方式在任何布局上设置任何属性?
【解决方案2】:

也许尝试将您的按钮放在另一个布局中,例如:

<RelativeLayout
    android:id="@+id/button_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <Button
        style="@style/SportsList"
        android:id="@+id/sport_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>

如果有效,请告诉我。

【讨论】:

  • 我猜更改按钮位置无济于事,您必须移动ListView :)
【解决方案3】:

您可能希望将 listview 的 layout_width 更改为“match_parent”

【讨论】:

    【解决方案4】:

    尝试在RelativeLayout 中添加ListView,如下所示:-

     <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
     <ListView
          android:id="@+id/list_view_sports"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:divider="@android:color/transparent"
          android:layout_marginTop="30dp"
          android:dividerHeight="30dp"
          android:layout_gravity="center_horizontal" />
     </RelativeLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多