ListView,如何让元素居中
ListView, how to centered elements
我正在用 Kotlin 语言编写应用程序。
如何在我的列表视图中将项目居中?
我尝试了很多方法,但找不到答案。
我还粘贴了我的自定义基础适配器。
此外,我尝试制作一个包含多个选项的视图。
但现在我知道如何 select 一个选项。
private class MyCustomAdapter(context: Context, AnsArray: List<Answer>): BaseAdapter()
{
private val mContext: Context
init {
mContext = context
}
val arr:List<Answer>
init {
arr = AnsArray
}
override fun getCount(): Int {
return arr.size;
}
override fun getItem(position: Int): Any // odp.setOnItemClickListener zwraca mi z tego co chce :)
{
return arr[position].id;
}
override fun getItemId(position: Int): Long {
return position.toLong();
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View
{
val layoutInflater = LayoutInflater.from(mContext);
val rowMain = layoutInflater.inflate(R.layout.row_main, parent, false)
val questionTextField = rowMain.findViewById<TextView>(R.id.question)
questionTextField.text = arr[position].text
return rowMain
}
}
active_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/pytanie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20sp"
android:text="Pytanie"
android:textAlignment="center"
android:textSize="20dp" />
<View
android:id="@+id/divider2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />
<ListView
android:id="@+id/odpowiedzi"
android:layout_width="wrap_content"
android:layout_height="79dp"
android:layout_gravity="center"
android:layout_marginBottom="0dp"
android:choiceMode="multipleChoice"
android:clickable="true" />
<Button
android:id="@+id/przycisk_dalej"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:text="Next question"
android:textAlignment="center"
android:textStyle="bold" />
</LinearLayout>
row_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
>
<TextView
android:id="@+id/question"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textAlignment="center"
android:text="qwe"
android:background="@drawable/selected_item"
/>
</LinearLayout>
<!--android:layout_width="wrap_content"
android:layout_height="match_parent"
-->
selected_item.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/teal_700"
>
</item>
<item
android:state_selected="true"
android:drawable="@drawable/anserws_drawable"
>
</item>
</selector>
answer_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#FF03DAC5" />
<solid android:color="@android:color/white" />
<corners android:radius="5dp" />
</shape>
- 使用
RecyclerView
代替ListView
- 使用
ConstraintLayout
代替LinearLayout
- 使用
match_parent
代替fill_parent
针对您的情况:设置
ListView android:layout_width="wrap_content"
至
android:layout_width="match_parent"
我正在用 Kotlin 语言编写应用程序。 如何在我的列表视图中将项目居中? 我尝试了很多方法,但找不到答案。 我还粘贴了我的自定义基础适配器。
此外,我尝试制作一个包含多个选项的视图。 但现在我知道如何 select 一个选项。
private class MyCustomAdapter(context: Context, AnsArray: List<Answer>): BaseAdapter()
{
private val mContext: Context
init {
mContext = context
}
val arr:List<Answer>
init {
arr = AnsArray
}
override fun getCount(): Int {
return arr.size;
}
override fun getItem(position: Int): Any // odp.setOnItemClickListener zwraca mi z tego co chce :)
{
return arr[position].id;
}
override fun getItemId(position: Int): Long {
return position.toLong();
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View
{
val layoutInflater = LayoutInflater.from(mContext);
val rowMain = layoutInflater.inflate(R.layout.row_main, parent, false)
val questionTextField = rowMain.findViewById<TextView>(R.id.question)
questionTextField.text = arr[position].text
return rowMain
}
}
active_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/pytanie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20sp"
android:text="Pytanie"
android:textAlignment="center"
android:textSize="20dp" />
<View
android:id="@+id/divider2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />
<ListView
android:id="@+id/odpowiedzi"
android:layout_width="wrap_content"
android:layout_height="79dp"
android:layout_gravity="center"
android:layout_marginBottom="0dp"
android:choiceMode="multipleChoice"
android:clickable="true" />
<Button
android:id="@+id/przycisk_dalej"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:text="Next question"
android:textAlignment="center"
android:textStyle="bold" />
</LinearLayout>
row_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
>
<TextView
android:id="@+id/question"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textAlignment="center"
android:text="qwe"
android:background="@drawable/selected_item"
/>
</LinearLayout>
<!--android:layout_width="wrap_content"
android:layout_height="match_parent"
-->
selected_item.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/teal_700"
>
</item>
<item
android:state_selected="true"
android:drawable="@drawable/anserws_drawable"
>
</item>
</selector>
answer_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#FF03DAC5" />
<solid android:color="@android:color/white" />
<corners android:radius="5dp" />
</shape>
- 使用
RecyclerView
代替ListView
- 使用
ConstraintLayout
代替LinearLayout
- 使用
match_parent
代替fill_parent
针对您的情况:设置
ListView android:layout_width="wrap_content"
至
android:layout_width="match_parent"