2013-11-26 1 views
4

사용자 정의 DialogFragment보기에 대해 정의한 레이아웃 내에 EditText이 있습니다. 나는 그들 오른쪽에 여백을 두었다. DialogFragment가 화면에 렌더링 될 때 반영되지 않습니다.사용자 정의 DialogFragment 내에서 여백 속성이 작동하지 않습니다.

login_dialog.xml

<?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" 
    android:background="@color/lightBlack" > 

    <Button 
     android:id="@+id/loginDialogCloseButton" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_dialog_disable" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="20dp" 


     /> 

    <TextView 
     android:id="@+id/loginNameTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="NAME" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="10dp" 
     android:layout_alignBottom="@+id/loginNameEditText" 

     android:layout_marginBottom="10dp" 
     android:textStyle="bold" 
     android:textColor="@android:color/darker_gray"   
     /> 

    <EditText 
     android:id="@+id/loginNameEditText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/loginPasswordEditText" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="20dp" 
     android:layout_below="@+id/loginDialogCloseButton" 

     android:layout_marginTop="20dp" 
     android:layout_toRightOf="@+id/loginNameTextView" /> 

    <TextView 
     android:id="@+id/loginPasswordTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="PASSWORD" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="10dp" 
     android:layout_alignBottom="@+id/loginPasswordEditText"   
     android:layout_marginBottom="10dp" 
     android:textStyle="bold" 
     android:textColor="@android:color/darker_gray"   
     /> 
    <EditText 
     android:id="@+id/loginPasswordEditText" 
     android:inputType="textPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/loginNameEditText" 
     android:layout_toRightOf="@+id/loginPasswordTextView" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="20dp" 

     android:layout_marginLeft="10dp" 
     /> 

    <Button 
     android:id="@+id/loginButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/loginPasswordEditText" 
     android:layout_below="@+id/loginPasswordEditText" 
     android:layout_marginTop="20dp" 
     android:text="LOGIN" 
     android:gravity="center" 
     android:textColor="@color/lightBlack" 
     android:textStyle="bold" /> 

</RelativeLayout> 

LoginDialog.java

@SuppressLint("ValidFragment") 
public class LoginDialog extends DialogFragment { 

    //*******interface for communicating with the host********// 
    public interface LoginCommunicator{ 
     public void getLoginCredentials(String name,String password); 

    } 

    LoginCommunicator listener; 

    //******default constructor*********************// 
    public LoginDialog() { 
     // TODO Auto-generated constructor stub 
    } 

    public LoginDialog(FragmentSettings fragmentSettings) { 
     // TODO Auto-generated constructor stub 
     listener=fragmentSettings; 
    } 

    /*//********from stackOverflow: it's safer to add the request for 
    a title-less window in the onCreateDialog() method instead of 
    onCreateView(). This way you can prevent ennoying NPE when 
    you're not using your fragment as a Dialog 
*/ 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     Dialog dialog= super.onCreateDialog(savedInstanceState); 

     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 

     return dialog; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View view=inflater.inflate(R.layout.login_dialog, container); 
    // getDialog().setTitle("LOGIN"); 

    // getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
     final EditText loginNameEditText=(EditText)view.findViewById(R.id.loginNameEditText); 
     final EditText loginPasswordEditText=(EditText)view.findViewById(R.id.loginPasswordEditText); 

     Button loginButton=(Button) view.findViewById(R.id.loginButton); 
     loginButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       String name=loginNameEditText.getText().toString(); 
       String password=loginPasswordEditText.getText().toString(); 

       listener.getLoginCredentials(name, password); 
      } 
     }); 
     return view; 
    } 
} 

보기 렌더링 :

enter image description here

그래서 android:layout_marginRight="20dp"은 변경되지 않습니다. 이러한 변화를 달성하는 방법은 무엇입니까?

답변

14

경우에 따라서는 매우 바깥 쪽 margin이 작동하지 않거나 일부 Android API 버전에서 0으로 잘라낼 수 있습니다. 주로 AdapterViewDialog에서 발생합니다. padding을 대신 사용하면 모든 Android 버전에서 작동합니다.

+0

나는 이상하게 여겨야한다. 감사. –

+0

죄송합니다. 받아들이려면 6 분이 필요했습니다. 그 사이에 다른 물건들로 바빴다. 지금 수락 :) –

관련 문제