java android - ListView 및 버튼이있는 안드로이드 레이아웃




developer deprecated (7)

좋아,이 특정 레이아웃은 나에게 짜증나. 그리고 listview를 가지는 방법을 찾지 못했을 것입니다. 하단에 일련의 버튼이있어 목록보기가 버튼 상단으로 뻗어 있지 않으므로 버튼이 항상 화면 하단에 맞춰집니다. 여기 내가 원하는 걸 :

죽은 ImageShack 링크가 제거되었습니다.

그것은 그렇게 쉬운 것처럼 보입니다.하지만 제가 시도한 모든 것은 실패했습니다. 어떤 도움이 필요합니까?

다음은 현재 코드입니다.

    RelativeLayout container = new RelativeLayout(this);
    container.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

    //** Add LinearLayout with button(s)

    LinearLayout buttons = new LinearLayout(this);

    RelativeLayout.LayoutParams bottomNavParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    bottomNavParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    bottomNavParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    buttons.setLayoutParams(bottomNavParams);


    ImageButton newLayer = new ImageButton(this);
    newLayer.setImageResource(R.drawable.newlayer);
    newLayer.setLayoutParams(new LinearLayout.LayoutParams(45, LayoutParams.FILL_PARENT));
    buttons.addView(newLayer);

    container.addView(buttons);

    //** Add ListView

    layerview = new ListView(this);

    RelativeLayout.LayoutParams listParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    listParams.addRule(RelativeLayout.ABOVE, buttons.getId());

    layerview.setLayoutParams(listParams);

    container.addView(layerview);

Answers

나는 이것이 당신이 찾고있는 것이라고 생각합니다.

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

    <Button android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/testbutton"
        android:text="@string/hello" android:layout_alignParentBottom="true" />

    <ListView android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:id="@+id/list"
        android:layout_alignParentTop="true" android:layout_above="@id/testbutton" />

</RelativeLayout>

나는이 질문에 대한 답을 찾고 있었는데 이것은 첫 번째 결과 중 하나였다. 현재 "최선의 답변"으로 선택된 답변을 포함하여 모든 답변이 질문되는 문제를 해결하지 못하는 것처럼 느껴집니다. 명시된 문제는 ListView가 전체 화면을 차지한다는 점에서 ButtonListView 의 두 구성 요소가 겹쳐져 있고 Button이 시각적으로 ListView (앞)에 떠있는 것입니다 (뷰 / 액세스 차단). ListView 의 마지막 항목)

여기 및 다른 포럼에서 본 답변을 바탕으로 마침내 결론을 내 렸습니다.

원래, 나는 가지고 있었다 :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FF394952">

  <ListView
    android:id="@+id/game_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    />

  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    style="@android:style/ButtonBar">

    <Button
      android:id="@+id/new_game"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/new_game"
      android:textColor="#FFFFFFFF"
      android:background="@drawable/button_background" />
  </LinearLayout>

</RelativeLayout>

RelativeLayout 을 루트 노드로 사용합니다.

이것은 Button이 ListView 겹치지 않는 최종 작업 버전입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FF394952">

  <ListView
    android:id="@+id/game_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_weight="1.0" />

  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    style="@android:style/ButtonBar">

    <Button
      android:id="@+id/new_game"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/new_game"
      android:textColor="#FFFFFFFF"
      android:background="@drawable/button_background" />
  </LinearLayout>

</LinearLayout>

단 두 가지 차이점이 있습니다. 먼저 LinearLayout 을 사용하도록 전환했습니다. 다음 비트, android:layout_weightListView 추가하는 데 도움이됩니다 android:layout_weight

이게 도움이 되길 바란다.


가장 쉬운 솔루션은 단추가있는 선형 레이아웃과 목록보기가있는 선형 레이아웃을 만드는 것입니다 (버튼 높이의 내용 줄 바꿈 및 목록 레이아웃 높이의 부모 일치). 목록보기로 레이아웃 위에 스크롤보기 만 만들면 단추 레이아웃은 무시됩니다. 도움이되기를 바랍니다. 죄송합니다. 코드를 작성하는 기분이 들지 않았습니다.


이게 효과가있다. 목록보기 위에 단추가 있으려면 다른 선형 레이아웃 안에 단추를 넣으십시오.

<LinearLayout> main container // vertical

<LinearLayout> scrollview must be contained in a linear layout //vertical - height to fill parent

    <ScrollView> set the height of this to fill parent

        <ListView> will be contained in the scrollview
        </ListView>

    </ScrollView>

</LinearLayout>

<LinearLayout> //horizontal - height to wrap content

<Button>

</Button>

</LinearLayout>

</LinearLayout>

나는이 게시물이 다소 오래되었다는 것을 알고 있지만 원래 포스터의 질문에 대답하기 위해 코드가 작동하지 않는 이유는 buttons.getId ()가 -1을 반환한다는 것입니다. 이 작업을 수행하려는 경우 call buttons.setId (10)와 같은 작업을 수행해야합니다. 그렇게하면 코드가 제대로 작동합니다.


가장 좋은 방법은 listview 아래에 버튼을 설정하는 상대 레이아웃입니다. 이 예제에서 단추는 같은 크기로 나란히 두는 것이 더 쉽기 때문에 선형 레이아웃으로되어 있습니다.

<RelativeLayout android:id="@+id/RelativeLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent">

<ListView android:id="@+id/ListView01" 
android:layout_alignParentTop="true"
android:layout_width="fill_parent" 
android:layout_height="fill_parent">
</ListView>

<LinearLayout android:id="@+id/LinearLayout01" 
android:layout_below="@+id/ListView01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true">
<Button android:id="@+id/ButtonJoin" 
android:text="Join"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentBottom="true">
</Button>
<Button android:id="@+id/ButtonJoin" 
android:layout_alignRight="@id/ButtonCancel" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Cancel"
android:layout_alignParentBottom="true">
</Button>
</LinearLayout>

</RelativeLayout>

아래 소스 코드를 참조하십시오.

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}






java android listview layout